Python 中的程序不匹配相同的词

Program in Python doesn't match equal words

我有一个列表,其中包含一些我想在文本中查找的 4-grams,但我在处理一些带有重音的单词时遇到了问题。 例如,假设我们的 4-gram 列表是 Quad = [(u'Jogos', u'Olímpicos', u'de', u'Verão'), (u'Jogos', u'Olímpicos', u'de', u'Inverno'), (u'Jogos', u'Olímpicos', u'de', u'Sidney')]

我有一个用于测试的小文本:

'Tasha fez parte da equipe norte americana que disputou os Jogos Olímpicos de Sidney em 2000 na Austrália'

但我无法将文本中的 'Jogos Olímpicos de Sidney' 与我的 4 克中的匹配。

我尝试了一些东西,

首先: 我做了第二个列表 Quad2 = [u'Jogos_Ol\xedmpicos_de_Ver\xe3o', u'Jogos_Ol\xedmpicos_de_Inverno', u'Jogos_Ol\xedmpicos_de_Sidney']

这就是输出,如果我执行 Quad2[2],我会得到 Jogos_Olímpicos_de_Sidney

当我尝试时

while i < (len(test) - 3):
if (test[i] + '_' + test[i+1] + '_' + test[i+2] + '_' + test[i+3]) in Quad2:
print test[i]

它不打印任何东西。

第二个:

while k< len(test)-3:
    for i in range(3):
        if test[k] == Quad[i][0] and test[k+1] == Quad[i][1] and test[k+2] == Quad[i][2] and test[k+3] == Quad[i][3]:
            print test[k]
    k = k+1

对于没有重音的单词,这两种方法都是单词,但像 'Olímpicos' 这样的单词不是。有什么想法吗?

据我所知,这不是口音问题。 Python 具有连接字符串和从字符串中查找子字符串的方法。如果可能的话,最好使用那些。

test = u'Tasha fez parte da equipe norte americana que disputou os Jogos Olímpicos de Sidney em 2000 na Austráli'

quads = [(u'Jogos', u'Olímpicos', u'de', u'Verão'),
         (u'Jogos', u'Olímpicos', u'de', u'Inverno'),
         (u'Jogos', u'Olímpicos', u'de', u'Sidney')]

for quad in quads:
    x = u' '.join(quad)
    res = test.find(x)
    if res >= 0:
        print("Found:", test[res:res+len(x)])

您需要打开您的测试文件才能将其读取为 Unicode:

import codecs
f = codecs.open('/home/portugues/teste.txt', encoding='utf-8')
test = f.read().split(' ')