如何在Python中将双反斜杠替换为单反斜杠?
我有一个字符串。在这个字符串里,有双反斜杠。我想把这些双反斜杠替换成单反斜杠,这样才能正确解析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')
'“'