如何在Python中从文件导入列表

3 投票
4 回答
28143 浏览
提问于 2025-04-17 00:12

我有一个文件,里面的内容是 f = [1,1,2,2,2,3,3,4,5],我想把这个文件导入成一个列表,这样它就能被当作列表来使用。比如说,我有两个文件,一个文件的内容是 f = [1,1,1,1,1],另一个文件的内容是 d = [2,2,2,2,2],我想用 zip(i,j) for i in f and for j in d 来处理它们。

f = file('f.txt')
d = file('d.txt')

for i in f:
    for j in d:
        print zip(i,j)

结果是

[('[', '['), ('1', '2'), (',', ','), ('1', '2'), (',', ','), ('1', '2'), (',', ','), ('1', '2'), (',', ','), ('1', '2'), (']', ']'), ('\n', '\n')]

我希望结果是这样的

[(1,2),(1,2), (1,2),(1,2), (1,2)]

4 个回答

0

如果你对这些数据有完全的控制权,我建议你使用pickle库来进行序列化,而不是把它们的表示形式转成文本。

想了解更多信息,可以查看这个链接:http://docs.python.org/library/pickle.html#example

1

首先,你想把文件当作Python文本来处理,但如果只是读取文件内容,你得到的只是一个字符串。遍历字符串时,你只能一个一个地拿到字符。

所以与其仅仅读取内容,不如把它们当作模块来加载:from f import ffrom d import d

这要求这些模块放在一个“包”里,也就是一个在你的PYTHONPATH中的文件夹,并且这个文件夹里要有一个__init__.py文件。这样做可以让你保持代码的整洁。

然后,你就可以像使用普通的Python变量一样,使用fd,它们会存储列表。

5

ast.literal_eval 是一种安全的方法,可以把字符串当作 Python 的基本数据类型来处理,比如字符串、数字、元组、列表、字典、布尔值和 None。

import ast
with open('f.txt') as f:
    with open('d.txt') as d:
        flist=ast.literal_eval(f.read())
        dlist=ast.literal_eval(d.read())
        print(zip(flist,dlist))

撰写回答