我下载了网站的源代码。通过下载源代码并将其转换为字符串,许多字符(如单引号('),双引号(“),斜角括号(<,>)和正斜杠(/))现在都是双重逃脱。
示例:
s = '\\u2018this \\/ that\\u2019'
网站上显示的文字,以及打印时我想要的方式是:
this / that
我的第一直觉是使用正则表达式查找2个反斜杠的所有实例,并用一个反斜杠替换它,然后使用str.encode('utf-8').decode('utf-8')
将4位转义的Unicode字符转换为它们的实际字符:
import re
sample = '\\u2018this \\/ that\\u2019'
pattern = r'(\\)\\\1'
double_escapes_removed = re.sub(pattern, '', text)
final_text = text.encode('utf-8').decode('utf-8')
print(final_text)
应返回this / that
,但返回的字符串似乎完全不变:\u2018this \/ that\u2019
。
我用re.findall(pattern, text)
单独测试了模式,并成功找到了3个双反斜杠实例。除此之外,我不知道出了什么问题
答案 0 :(得分:1)
事实证明这有点困难。问题的一个重要部分是虽然'\ u2018'是6个字符,'\ u2018'是单个字符的表示,所以你不能只用'\ u'替换'\ u'并让它工作。
这可以让你在大多数情况下无需使用正则表达式手动迭代转义:
>>> s.encode('ascii').decode('unicode-escape')
<<< '‘this \\/ that’'
Python 3确实输出一个关于'\/'
是无效的unicode转义序列的警告,所以你可能想要先处理它们。