如何在Python中将双反斜杠替换为单反斜杠?

57 投票
6 回答
67764 浏览
提问于 2025-04-16 21:52

我有一个字符串。在这个字符串里,有双反斜杠。我想把这些双反斜杠替换成单反斜杠,这样才能正确解析unicode字符代码。

(Pdb) p fetched_page
'<p style="text-align:center;" align="center"><strong><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0<\\/span><\\/strong><\\/p>\n<p><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0 in \\u201cDreaming in Code\\u201d give a brief description of programming in its early years and how and why programmers are still struggling today...'

在这个字符串里,你可以看到转义的unicode字符代码,比如:

\\u201c

我想把它变成:

\u201c

尝试 1:

fetched_page.replace('\\\\', '\\')

但是这个方法不行——它在找四个反斜杠。

尝试 2:

fetched_page.replace('\\', '\')

但这个方法导致了行尾错误。

尝试 3:

fetched_page.decode('string_escape')

但是这个方法对文本没有任何影响。所有的双反斜杠还是保持为双反斜杠。

6 个回答

16

我没有看到你说的那种情况:

>>> x = "\\\\\\\\"
>>> print x
\\\\
>>> y = x.replace('\\\\', '\\')
>>> print y
\\

当你在输出中看到 '\\\\' 时,其实你看到的斜杠数量是字符串中实际数量的两倍,因为每个斜杠都被转义了。你写的代码应该是没问题的。试着打印出实际的值,而不仅仅是看 REPL(交互式编程环境)是怎么显示它们的。

27

你可以试试 codecs.escape_decode,这个方法可以解码那些转义序列。

32

Python3:

>>> b'\\u201c'.decode('unicode_escape')
'“'

或者

>>> '\\u201c'.encode().decode('unicode_escape')
'“'

撰写回答