我有一个像这样的地址
line = 12345 North Drive,,"Palm Retreat, CO",CO,92261
当我 split 时我得到
line.split(",")
['12345 North Drive', '', '"Palm Retreat', ' CO"', 'CO', '92261']
我想要的是
'12345 North Drive', '', '"Palm Retreat CO"', 'CO', '92261']
我在这里缺少什么?
split()
正在按预期工作;它不关心引号。您可能想结合 StringIO
查看 csv
模块:您将字符串放在 StringIO
对象中(这使它看起来像一个文件),然后将其传递给 csv.reader
。像这样:
import csv
from cStringIO import StringIO
s = "12345 North Drive,,\"Palm Retreat, CO\",CO,92261"
s = StringIO(s)
reader = csv.reader(s, delimiter=",")
for row in reader:
print row
更新:实际上,由于 csv.reader
可以处理任何产生行的迭代(不仅仅是文件),您可以简单地将行列表传递给 csv.reader
无需通过 StringIO
位。