什么是处理反斜杠转义字符的好方法?

时间:2011-02-12 01:14:50

标签: python string escaping

我有一个以下格式的字符串;

s="part1,part2,part3,part4"

我可以通过调用s.split(",")命令将字符串拆分成片段。

现在,问题是如果我在字符串中使用反斜杠转义逗号怎么办?假设我有以下字符串,

s="part1,part2,pa\\,rt3,part4"

我希望能够得到["part1","part2","pa,rt3","part4"]作为结果。

我最初的想法是用不存在的字符串替换\,,然后使用split命令拆分字符串,并用逗号替换不存在的字符串。

您能想出更好的方法来解决这个问题吗?

3 个答案:

答案 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 。所以你的字符串将有一个合法的单词'\'。如果你特别想要\,成为这个词的一部分,那么基于正则表达式的解决方案对我来说很好。