如何拆分逗号分隔符字符串。该字符串是一系列逗号分隔的数字和单词。单词用引号引用,数字不引用。单词可能包含非定界逗号,在引号内应该没有。单词可能包含其他类型的引号,必须通过前面的反斜杠进行转义,如下所示:
'','some-mail@some-domain.org','f4c1bfd5-969d-\'4,7\"2a-,b1\'29-42de49eb4406',2827,1378614418
我尝试使用正则表达式[^\']
进行拆分,但这也会获取转义的逗号。
我已经尝试过将字符计算为另类,但这种速度非常慢。
如果字符串中存在转义斜杠,python的csv
读取器也会在非分隔逗号上拆分字符串。也许这不是有效的CSV?
我应该得到的子字符串列表是:
[
'', # empty string
'some-mail@some-domain.org', # text like email
'f4c1bfd5-969d-\'4,7\"2a-,b1\'29-42de49eb4406', # text, comma and escaped quotes
2827, # number
1378614418 # number
]
这就是我使用csv模块的方式:
reader = csv.reader(StringIO(values_string), delimiter=',', quotechar="'", quoting=csv.QUOTE_ALL,skipinitialspace=True)
但我明白了:
['', 'some-mail@some-domain.org', 'f4c1bfd5-969d-\\4', '7\\"2a-', "b1\\'29-42de49eb4406'", '2827', '1378614418']
答案 0 :(得分:3)
with open(file_name) as fp:
reader = csv.reader(fp, quotechar="'", doublequote=False, escapechar='\\')