繁体   English   中英

分割一个逗号分隔的字符串,其中可能包含逗号和单引号之间的转义引号

[英]Split a comma delimited string which may contain commas and escaped quotes between single quotes

如何分割逗号定界符字符串。 字符串是一系列用逗号分隔的数字和单词。 单词用单引号引起来,数字则没有。 单词可以包含非定界逗号,在引号内应该没问题。 单词可能包含其他类型的引号,必须用前面的反斜杠将其转义,如下所示:

'','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']
with open(file_name) as fp:
    reader = csv.reader(fp, quotechar="'", doublequote=False, escapechar='\\')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM