带有AttributeError的Python脚本:'tuple'对象没有属性'lower'

时间:2016-02-18 00:22:13

标签: python

我是python的新手。一个python脚本运行正常 - 它现在死了,出现以下错误:

File "/var/newspaper/myscript.py", line 495, in <listcomp>
    return sorted(set([x.lower() for x in self.regex.findall(text)] +
 self.regex_a.findall(text)))
AttributeError: 'tuple' object has no attribute 'lower'

错误周围的行如下:

def findall_unique(self, text):
    """
    Find all unique occurrences of keywords in text.
    """
    # Ordinary words are being lower(), abbreviations are returned as is
    return sorted(set([x.lower() for x in self.regex.findall(text)] + self.regex_a.findall(text)))

def get_related_ids(self, words):
    result = set(self.related_ids.get(x.lower()) for x in words)
    result = [x for x in result if x is not None]
    result.sort()
    return result

我想在进行设置/排序操作之前需要检查x是否有较低的属性...如果确实返回是正常的,如果没有那么就必须做其他事情...可以你建议一些能解决错误的代码吗?

1 个答案:

答案 0 :(得分:0)

这应该有效:

[x.lower() for y in self.regex.findall(text) for x in y]

y是一个元组,这会降低元组的所有元素。

re.findall的文档说:&#34;如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。&#34;这是元组列表的来源。这里的组意味着您的正则表达式中有括号来定义匹配的组。