将文件加载到数组中,并用两个分隔符将其分隔两次

Load a file into an array, and separate it twice with two delimiters

我想导入一个文件,然后使用两个分隔符将它们加载到两个数组中。我想打开 data.txt 其中包含:

place1,time1
place2,time2
place3,time3

...

我希望数组 places 是之前的位置,times 是 ','

之后的时间

我可以使用 open() 成功加载文件,然后使用 line.strip().split('\n')

将它们拆分成一个数组
data = open("data.txt", "r")
infoArray = []
for line in data:
    infoArray.append(line.strip().split('\n'))
data.close()

print infoArray

我希望 places[0] 是 place1,places[1] 是 place2,等等...而 time[0] 是 time1,time[1],是 time2,等等-第四。

您可以使用 csv 模块读取逗号分隔的数据,以及 zip() 在解压可迭代的 reader 对象时:

>>> import csv
>>> with open("data.txt") as f:
...     reader = csv.reader(f)
...     p, t = zip(*reader)
... 
>>> p
('place1', 'place2', 'place3')
>>> t
('time1', 'time2', 'time3')

使用 csv 而不是尝试自己解析文件的论点是,它将处理诸如引用值(标准 CSV 格式)之类的事情,调用 str.split(line, ',') 会失败.

无论您只使用 file 对象还是 csv.reader 结果,它们都是可迭代的;当你遍历它们时,你会得到文件的每一行。这是一个更可见的输入示例,您可以将 [1, 2] 可视化为对应于第一行数据,将 [3, 4] 可视化为第二行:

>>> a, b = zip(*[[1, 2], [3, 4]])
>>> a
(1, 3)
>>> b
(2, 4)

最后,此示例使用 with open(),创建上下文管理器,并在您使用完后 ensures that the file is closed