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

时间:2019-04-22 02:18:15

标签: python arrays delimiter

我想导入一个文件,然后使用两个定界符将它们加载到两个数组中。我想打开包含以下内容的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

我希望place [0]为place1,places [1]为place2,依此类推...并且对于time [0]为time1,time [1],为time2,等等。

1 个答案:

答案 0 :(得分:1)

您可以使用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, ',')的调用将失败。 / p>

无论您仅使用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