如何使此搜索功能起作用?

时间:2014-11-26 15:59:49

标签: python search match

我正在尝试将文本与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

1 个答案:

答案 0 :(得分:0)

这段代码中有很多非常奇怪的东西,根本就没有意义。

首先,您似乎使用某种查询语法“OR”,但之后您通过正则表达式运行它。正则表达式不知道“OR”是什么。

其次,你遍历q的元素,但q是一个字符串,它的元素是字符。您应该在循环之前打印escapedregex的值:它们肯定不是您所期望的。

第三,你的if语句是无意义的。 re.search返回Match对象或None。所以说if re.search(regex, text) in row是没有意义的,因为它只是检查Match对象或None是否在行中,它总是为假。