我是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是否有较低的属性...如果确实返回是正常的,如果没有那么就必须做其他事情...可以你建议一些能解决错误的代码吗?
答案 0 :(得分:0)
这应该有效:
[x.lower() for y in self.regex.findall(text) for x in y]
y
是一个元组,这会降低元组的所有元素。
re.findall
的文档说:&#34;如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。&#34;这是元组列表的来源。这里的组意味着您的正则表达式中有括号来定义匹配的组。