从文本文件中读取时,列表不被识别为列表

时间:2017-12-23 21:12:44

标签: python python-3.x list

我正在从txt文件中读取列表但是当我将它们读回并保存到变量时,Python识别它有一个字符串而不是列表。有没有办法解决这个问题?

def makereport():
    with open('quizdb','r') as quizdata:
        for line in quizdata:
            print(line)
            print(line[1])

输出:

['maths(easy).txt', 'joh17', 'C', 0.0, 0]
'

正如您所看到的那样,当我按索引位置打印时,它会打印字符而不是列表中的实际位置(对象)

1 个答案:

答案 0 :(得分:1)

您无法从字符串以外的文件中读取任何内容。您需要使用python库,例如ast

>>> ast.literal_eval("['maths(easy).txt', 'joh17', 'C', 0.0, 0]")
['maths(easy).txt', 'joh17', 'C', 0.0, 0]

这会将字符串解释为实际的list,您可以在其中访问索引:

>>> ast.literal_eval("['maths(easy).txt', 'joh17', 'C', 0.0, 0]")[0]
'maths(easy).txt'

查看jsonpickle以了解更直观的数据存储方式。通常最好使用这些方法之一而不是实际存储原始字符串表示,因为客户端只需调用json.loads而不必评估文本文件。