我有一个以下格式的字符串;
s="part1,part2,part3,part4"
我可以通过调用s.split(",")
命令将字符串拆分成片段。
现在,问题是如果我在字符串中使用反斜杠转义逗号怎么办?假设我有以下字符串,
s="part1,part2,pa\\,rt3,part4"
我希望能够得到["part1","part2","pa,rt3","part4"]
作为结果。
我最初的想法是用不存在的字符串替换\,
,然后使用split命令拆分字符串,并用逗号替换不存在的字符串。
您能想出更好的方法来解决这个问题吗?
答案 0 :(得分:11)
用不存在的字符串替换它是个不错的选择。
否则,您可以使用带有负向lookbehind的正则表达式,如下所示:
re.split(r'(?<!\\),', 'part1,part2,pa\\,rt3,part4')
答案 1 :(得分:4)
csv模块也可以处理这个问题:
import csv
from io import StringIO
s = 'part1,part2,pa\\,rt3,part4'
f = StringIO(s)
r = csv.reader(f,quoting=csv.QUOTE_NONE,escapechar='\\')
for row in r:
print row
['part1', 'part2', 'pa,rt3', 'part4']
答案 2 :(得分:-1)
顺便说一下,'\'是','逗号是 not an escape character 。所以你的字符串将有一个合法的单词'\'。如果你特别想要\,成为这个词的一部分,那么基于正则表达式的解决方案对我来说很好。