如何用Python读取CSV文件中包含逗号的单个值
我有一个csv文件,里面包含了以下这些值:
"Spam2,pank",Spam3,Spam6,Spam7
Spam1,Spam5,Spam0,Spam9
我正在使用以下的Python代码来读取某一列:
for line in open('D:\eggs2.csv','rb'):
columns = line.split(",")
print columns[0]
它给出的输出是:
"Spam2
Spam1
而我期待的结果是:
Spam2,pank
Spam1
请帮帮我。
3 个回答
-1
你可以把它分成两次。第一次分的时候,得到的结果像是 '''"\w"'''
,也就是把引号里面的所有字母和数字都提取出来。这个结果会是一个列表,里面包含了每次分割后的内容。然后你再对每个列表进行第二次分割,这次是用 ','
来分。最后,你把这些列表合并成一个简单的列表。
0
这要看你想把CSV文件读成什么样的数据结构。如果你这样做的话,数据会被加载到一个包含元组的列表里。每一行会成为列表中的一个条目,而每一行又会是一个字符串值的元组。
我建议你创建一个辅助函数来读取文件,我一直在用这个方法。
def readfile(filepath, delim):
with open(filepath, 'r') as f:
return [tuple(line.split(delim)) for line in f]
data = readfile('D:\eggs2.csv', ',')
使用“with”有很多好处,比如它会自动处理文件的关闭、异常等问题,但你需要使用Python 2.7或更高版本。
如果将来你想用“|”作为分隔符或者其他什么分隔符,你就不需要重新写代码了。
7
你不需要重新发明轮子,Python 的 csv 模块已经做得很好了。
import csv
csv_file = open('D:\eggs2.csv','rb')
csv_reader = csv.reader(csv_file)
for row in csv_reader:
print row[0]
csv_file.close()
更多信息请查看 python csv