2017-05-30 27 views
1

我有一个带有文字和小短语的分隔,的.txt文件,我希望看到哪些文字出现在由 返回的每行中for line in cur.execute("select text from reviews where business_id = (?) ", (s,)):( s从外部循环获取值)。 我的目标是在SQL查询返回的行中发现.txt文件中的一个单词时,向计数器添加+1(这些行是不同大小的字符串,通常大到可以分割并检查每个单词)耗时的)。 有没有另外一种方法呢? 我试过的东西:检查一个文件中的文字是否以有效的方式出现在SQL查询中

for words in line: 
    with open("good_words.txt", "r") as check: 
    for x in check: 
     if x in words: 
     goods += 1 

这导致我的电脑烧毁并基本破碎。

+0

您可以将单词转换为正则表达式,然后使用正则表达式搜索它们。 – Barmar

+1

打开RegEx中的每个单词和短语,并有多个if-then-else语句?这将同样耗时,但我会尝试。 – Zap

+0

'对于行中的单词:'迭代'行中的字符,而不是单词。它应该是''line.split()'中的单词' – Barmar

回答

2

将所有单词和短语读入正则表的列表。

good_words = [] 
with open("good_words.txt", "r") as f: 
    for line in f: 
     good_words.append(re.compile(r'\b' + re.escape(line) + r'\b')) 
for line in cur.execute("select text from reviews where business_id = (?) ", (s,)): 
    for word in good_words: 
     if word.search(line[0]): 
      goods += 1 

\b匹配单词边界,所以你不必将行分成单词。

相关问题