如何按逗号拆分行,但忽略引号内的逗号
可能重复的问题:
如何读取带有“?”的CSV行
我看到了一些相关的问题,但没有一个直接解决我想做的事情。
我正在从一个CSV文件中读取文本行。
所有的项目都被引号包围,有些引号内还有额外的逗号。
我想沿着逗号来分割这一行,但忽略引号内的逗号。
有没有办法在Python中做到这一点,而不需要写很多正则表达式?
举个例子:
"114111","Planes,Trains,and Automobiles","50","BOOK"
我希望将其解析成4个不同的变量值:
"114111" "Planes,Trains,and Automobiles" "50" "Book"
在line.split()
中有没有我遗漏的简单选项?
2 个回答
-7
你可以考虑用逗号“,”来分割,也就是“[引号][逗号][引号]”。
另一种选择是使用转义字符,也就是说,如果有人想在字符串里放一个逗号,他们可以用\c来表示;如果想放一个反斜杠,就用\\。这样的话,你需要先分割字符串,然后在处理之前把转义的字符还原回来。
40
如果你想从CSV文件中读取数据,可以使用Python自带的csv
模块。这个模块可以帮你处理那些用引号括起来的、用逗号分隔的值。
示例
# cat test.py
import csv
with open('some.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# cat some.csv
"114111","Planes,Trains,and Automobiles","50","BOOK"
# python test.py
['114111', 'Planes,Trains,and Automobiles', '50', 'BOOK']
[]