向“AttributeError”python

时间:2016-09-07 21:17:59

标签: python python-2.7 python-3.x

所以,我有一些带有一些特殊字符和形状的推文。我试图通过将它们转换为小写来在这些推文中找到一个单词。该函数在遇到这些特殊字符时抛出“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新手并自学它。任何帮助都将非常感激。

1 个答案:

答案 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 &amp"
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 &amp
True

修改

对于Python 2,您应在脚本顶部添加from __future__ import unicode_literals,以确保将所有内容编码为UTF-8。
您可以阅读更多相关信息here