在进行网页抓取过程中,并除去了所有html标签之后,我在unicode(0.00)中得到了黑色电话字符\u260e。但是与this response不同,我也希望摆脱它。
我在Scrapy中使用以下正则表达式消除了html标签:
pattern = re.compile("<.*?>| |&",re.DOTALL|re.M)
然后,我尝试匹配\u260e,我认为自己被the backslash plague捕获了。我没有成功尝试以下模式:
pattern = re.compile("<.*?>| |&|\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>| |&|\\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>| |&|\\\\u260e",re.DOTALL|re.M)
这些都不起作用,我仍然有\u260e作为输出。
我怎样才能使它消失?
最佳答案
使用Python 2.7.3,以下内容对我来说很好:
import re
pattern = re.compile(u"<.*?>| |&|\u260e",re.DOTALL|re.M)
s = u"bla ble \u260e blo"
re.sub(pattern, "", s)
输出:
u'bla ble blo'
正如@Zack所指出的,之所以可行,是因为该字符串现在已经是unicode了,也就是说,该字符串已经被转换,并且字符
\u260e
的序列现在是了-大概-两个字节用来写那个小的黑色。电话☎(:一旦要搜索的字符串和正则表达式本身都具有黑色电话,而不是
\u260e
字符序列,它们都将匹配。关于python - 如何消除☎unicode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16401817/