在进行网页抓取过程中,并除去了所有html标签之后,我在unicode(0.00)中得到了黑色电话字符\u260e。但是与this response不同,我也希望摆脱它。

我在Scrapy中使用以下正则表达式消除了html标签:

pattern = re.compile("<.*?>|&nbsp;|&amp;",re.DOTALL|re.M)

然后,我尝试匹配\u260e,我认为自己被the backslash plague捕获了。我没有成功尝试以下模式:
pattern = re.compile("<.*?>|&nbsp;|&amp;|\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>|&nbsp;|&amp;|\\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>|&nbsp;|&amp;|\\\\u260e",re.DOTALL|re.M)

这些都不起作用,我仍然有\u260e作为输出。
我怎样才能使它消失?

最佳答案

使用Python 2.7.3,以下内容对我来说很好:

import re

pattern = re.compile(u"<.*?>|&nbsp;|&amp;|\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/

10-09 06:25