如何处理反斜杠转义字符?

4 投票
3 回答
1797 浏览
提问于 2025-04-16 11:40

我有一个这样的字符串:

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')

撰写回答