gpt4 book ai didi

python - 如何从不带引号的文件中加载嵌套列表?

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:12 24 4
gpt4 key购买 nike

我应该为一个模块分配的软件批发商创建一个“库存控制”系统。我已经创建了该程序,但我无法永久保存内容。该程序由如下嵌套列表组成:

[["Ms Office", "CD", 7, "Microsoft"], ["Acrobat Reader", "DVD", 12, "Adobe"], ["Norton Antivirus", "DVD", 24, "Symantec"]]

我可以将它们以格式保存到文本文档中

['Ms Office', 'CD', 7, 'Microsoft']
['Acrobat Reader', 'DVD', 12, 'Adobe']
['Norton Antivirus', 'DVD', 24, 'Symantec']

但是当我尝试将它作为相同格式的列表加载回来时,我最终用引号分隔每个条目,如下所示:

["['Ms Office', 'CD', 7, 'Microsoft']", "['Acrobat Reader', 'DVD', 12, 'Adobe']", "['Norton Antivirus', 'DVD', 24, 'Symantec']"]

我现在只需要去掉列表中每个项目周围的双引号。我用来加载此文件的代码:

filename = open('Appexstock.txt', 'r')
contents = filename.read()
thelist = [name for name in contents.split('\n') if name.split('"') if name]
filename.close()

我已经在线搜索了几个小时并尝试了所有方法,但我仍然找不到让它工作的方法。我看到很多人建议使用 CSV 模块,但我不知道如何将它应用到我的代码中。

最佳答案

使用ast.literal_eval:

>>> from ast import literal_eval
with open('Appexstock.txt') as f:
lis = [literal_eval(line) for line in f]
...
>>> lis
[['Ms Office', 'CD', 7, 'Microsoft'], ['Acrobat Reader', 'DVD', 12, 'Adobe'], ['Norton Antivirus', 'DVD', 24, 'Symantec']]

要存储 python 对象,最好使用 pickle模块:

>>> import pickle
>>> data = [["Ms Office", "CD", 7, "Microsoft"], ["Acrobat Reader", "DVD", 12, "Adobe"], ["Norton Antivirus", "DVD", 24, "Symantec"]]
with open('my_data', 'w') as f:
pickle.dump(data, f)
...
with open('my_data') as f:
print pickle.load(f)
...
[['Ms Office', 'CD', 7, 'Microsoft'], ['Acrobat Reader', 'DVD', 12, 'Adobe'], ['Norton Antivirus', 'DVD', 24, 'Symantec']]

关于python - 如何从不带引号的文件中加载嵌套列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com