我正在使用python 2.X并且我正在从文件中加载文本,这里是文本中的一行
Odio¿Mañanapensarporque RT luego pasa lo que pasa Marzo♡♡♡
我发现这个正则表达式[^ \ x30- \ xFF]与我想要的字符完全匹配(使用在线正则表达式工具),但是当我在我的代码中使用它时:
filtered_comments = re.sub("[^\x30-\xFF]", " ", all_comments)
它与相同的字符不匹配;你可以试试http://pythex.org 所以在这篇文章中我想匹配♡♡♡并离开ñ和¿ ....任何想法?
答案 0 :(得分:2)
请尝试以下脚本,请参阅第一行的#coding=utf-8
。有关详细信息,请参阅PEP-0263
# coding=utf-8
import re
comments = u"Odio ¿Mañana pensar porque RT luego pasa lo que pasa Marzo ♡♡♡"
rx = re.compile(u"[\u2661]+")
# If you want to remove non-ASCII characters, as you mentioned in comments,
# uncomment following regex.
# Downside is it will remove all accented characters too.
#
# rx = re.compile(u"[^\x00-\x7F]+")
filtered_comments = re.sub(rx, " ", comments)
print filtered_comments
会打印
Odio ¿Mañana pensar porque RT luego pasa lo que pasa Marzo
答案 1 :(得分:1)
all_comments
type
或str
的{{1}}是?如果类型为unicode
且字符打印正确,则正则表达式应该有效。
如果您的字符串属于unicode
类型,则需要使用正确的编码对其进行编码。假设您的编码是UTF-8,这将起作用:
str
需要注意的另一件事是:filtered_comments = re.sub("[^\x30-\xFF]", " ", all_comments.decode('utf-8'))
匹配^\x30-\xFF
和!
以及其他一些低于#
的符号。也许你想要\x30
,因为^\x20-\xFF
是空间,它几乎是最低的典型ASCII字符?