【问题标题】:Get information from a .txt file从 .txt 文件中获取信息
【发布时间】:2015-09-03 18:03:09
【问题描述】:

我有一个.txt 文件,里面有一个列表(这里是一个列表示例):

[[[[1155, 87]], [[1155, 612]], [[385, -81]], 0, 0, 0, 0, 0, 0, 0], [151, 130, 83, 0, 0, 0, 0, 0, 0, 0], [2, 4, 2, 0, 0, 0, 0, 0, 0, 0], [22, 31, 1, 0, 0, 0, 0, 0, 0, 0], [(1, 2, 3), (1, 2, 3), (1, 2, 3), 0, 0, 0, 0, 0, 0, 0], [[2, 3], [1, 3], [3], 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]

我想把这个列表放回我的程序中,所以我打开了文件:

file = open(file.txt).read()

然后我尝试在我的程序中获取它: a = file, 但我有一个字符串而不是列表,例如a[0] 返回字符串的第一个字符:[。所以对我来说有两个选择:要么我不知道如何打开和使用.txt 文件,要么我必须通过循环取回我的列表,但这似乎很复杂。

【问题讨论】:

    标签: python string list character


    【解决方案1】:

    你可以使用ast.literal_eval:

    from ast import literal_eval
    
    with open("file.txt") as f:
        lst = literal_eval(f.read())
    

    【讨论】:

    • 我正要回答,但我不知道literal_eval。这是一个非常棒的解决方案。
    • 我试过了,我有一个很大的错误:文件“d:\用户\卢卡斯\桌面\空间入侵者\propre\级别edit2.py”,第711行,在leveleditor lst = literal_eval(f .read) 文件“d:\Program Files\python\lib\ast.py”,第 87 行,在 literal_eval 返回 _convert(node_or_string) 文件“d:\Program Files\python\lib\ast.py”,第 86 行,在 _convert raise ValueError('malformed node or string: ' + repr(node)) ValueError: malformed node or string:
    • @Philipe,您似乎传递了对非 f.read() 方法的引用,您使用过 literal_eval(f.read) <- missing parens 吗?
    • @Padraic Cunningham 哦,你是完全正确的,我的错我忘了我在文件中有多个列表,我只用了一个来简化它,文件中只有一个列表,谢谢你认为我现在可以管理 txt 文件中的多个列表
    • 如果你有多个列表,你只需要在迭代f时在每一行调用literal_eval。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多