这是以下数据样本
"TABITHA","OLLIE","JAIME","WINIFRED"
后跟一段正确读取它的代码。
with open("names.txt", 'rb') as f:
data = [map(str, line.split(',')) for line in f]
但是,这会将其作为列表列表读入。该列表只有一个列表'高',
e.g. [["TABITHA", "OLLIE", "JAIME", "WINIFRED"]]
因此可能只是一个列表,而不是列表列表。有没有办法将其作为列表阅读?学习之旅仍在继续: - )
答案 0 :(得分:3)
使用“包含电池”csv(逗号分隔值)模块。尽管名称,它也可以配置为其他分隔符,并有许多其他选项。
import csv
with open('names.txt','rb') as f:
for line in csv.reader(f):
print line
输出:
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
答案 1 :(得分:0)
修改强>
功能性,“自己动手”,代码:
with open("names.txt", 'rb') as f:
for line in f:
line = line.strip()
line = [w.replace('"','') for w in line.split(',')]
print line
创建列表 line
:
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
答案 2 :(得分:0)
阅读此类内容的最佳方式是使用csv module。这将正确处理可能出现在引用值中的嵌入式逗号。
答案 3 :(得分:0)
如果你想愚蠢而不使用CSV模块:
sum([line.split(", ") for line in f], [])
编辑:那么我的初始数据有什么问题呢?
>>> f
['TABITHA, OLLIE, JAIME, WINIFRED', 'Spam, Eggs, Dead Parrots']
>>> sum([line.split(", ") for line in f], [])
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED', 'Spam', 'Eggs', 'Dead Parrots']
使用文件:
$ cat temp.csv
foo, bar, baz
spam, eggs, quux
$ python
>>> f = open("temp.csv")
>>> sum([line.split(", ") for line in f], [])
['foo', 'bar', 'baz\n', 'spam', 'eggs', 'quux\n']
(添加map(str.strip, ...)
以摆脱尾随空格)