如何处理反斜杠转义字符?
我有一个这样的字符串:
s="part1,part2,part3,part4"
我可以通过调用 s.split(",")
命令把这个字符串分割成几部分。
现在的问题是,如果字符串里有用反斜杠转义的逗号该怎么办?假设我有以下这个字符串:
s="part1,part2,pa\\,rt3,part4"
我希望能得到 ["part1","part2","pa,rt3","part4"]
这样的结果。
我最开始的想法是把 \,
替换成一个不存在的字符串,然后用分割命令分割字符串,最后再把那个不存在的字符串替换回逗号。
你能想出更好的方法来解决这个问题吗?
3 个回答
-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']
11
用一个不存在的字符串来替换它是个不错的选择。
另外,你也可以使用正则表达式,配合一个负向前查找,像这样:
re.split(r'(?<!\\),', 'part1,part2,pa\\,rt3,part4')