0

这是以下数据样本

"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"]]

因此也可能只是一个列表,而不是列表的列表。有没有办法将它作为一个列表来阅读?学习之旅还在继续:-)

4

4 回答 4

3

使用“包含电池”的csv(逗号分隔值)模块。尽管名称如此,它也可以配置为其他分隔符,并且还有许多其他选项。

import csv
with open('names.txt','rb') as f:
    for line in csv.reader(f):
        print line

输出:

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
于 2012-07-04T02:36:40.387 回答
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']
于 2012-07-04T02:32:34.850 回答
0

阅读此类内容的最佳方法是使用csv 模块。这将正确处理可能出现在引用值中的嵌入逗号。

于 2012-07-04T02:36:54.167 回答
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']

(添加 amap(str.strip, ...)以消除尾随空格)

于 2012-07-04T02:46:06.963 回答