所以,我有一些带有一些特殊字符和形状的推文。我试图通过将它们转换为小写来在这些推文中找到一个单词。该函数在遇到这些特殊字符时抛出“AttributeError”,因此,我希望以跳过这些记录并处理其他记录的方式更改我的函数。
我可以在python中为“AttributeError”添加异常吗?我希望它更像是“iferror resume next”/错误处理语句。
我目前正在使用: -
def word_in_text(word, text):
try:
print text
word = word.lower()
text = text.lower()
match = re.search(word, text)
if match:
return True
else:
return False
except(AttributeError, Exception) as e:
continue
使用@ galah92建议错误帖子: -
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\core\series.py", line 2220, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas\src\inference.pyx", line 1088, in pandas.lib.map_infer (pandas\lib.c:63043)
File "<input>", line 1, in <lambda>
File "<input>", line 3, in word_in_text
File "C:\Python27\lib\re.py", line 146, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
我是Python新手并自学它。任何帮助都将非常感激。
答案 0 :(得分:0)
re.IGNORECASE
时,您可以使用search()
标记
这样您就不需要处理lower()
或例外。
def word_in_text(word, text):
print text
if re.search(word, text, re.IGNORECASE):
return True
else:
return False
举个例子,如果我跑:
from __future__ import unicode_literals # see edit notes
import re
text = "CANCION! You &"
word = "you"
def word_in_text(word, text):
print(text)
if re.search(word, text, re.IGNORECASE):
return True
else:
return False
print(word_in_text(word, text))
输出结果为:
CANCION! You &
True
修改强>
对于Python 2,您应在脚本顶部添加from __future__ import unicode_literals
,以确保将所有内容编码为UTF-8。
您可以阅读更多相关信息here。