我正在尝试将文本与python中的查询匹配,其中匹配项被赋予标签0,而非匹配项将被赋予标签1.但是,程序仅将零附加到列表中,而文件中的文本之间也存在不匹配。出了什么问题?
def read_docs(filename):
'''
Return X,Y where X is the list of documents and Y the list of their
labels.
'''
X = []
Y = []
q= '(nae OR Nae) OR (nea OR Nea) OR (sjaon OR Sjaon) OR (vasteloavend OR Vasteloavend) OR (zoervleisj OR Zoervleisj) OR (noe OR Noe)'
escaped = [re.escape(query) for query in q]
regex="|".join(escaped)
with open(filename) as f:
r = Reader(f, delimiter=";", dialect="excel", encoding="utf-8")
for row in r:
text = row[5]
if re.search(regex, text) in row:
Y.append(0)
else:
Y.append(1)
X.append(text)
return X,Y
答案 0 :(得分:0)
这段代码中有很多非常奇怪的东西,根本就没有意义。
首先,您似乎使用某种查询语法“OR”,但之后您通过正则表达式运行它。正则表达式不知道“OR”是什么。
其次,你遍历q的元素,但q是一个字符串,它的元素是字符。您应该在循环之前打印escaped
和regex
的值:它们肯定不是您所期望的。
第三,你的if语句是无意义的。 re.search
返回Match对象或None。所以说if re.search(regex, text) in row
是没有意义的,因为它只是检查Match对象或None是否在行中,它总是为假。