Python中的程序与相等的单词不匹配

时间:2016-01-14 20:15:22

标签: python n-gram utf8-decode

我有一个我希望在文本中找到的大约4克的列表,但是我遇到了一些带有重音的单词的问题。 例如,假设我们的4克列表是 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')]

我有一个小的txt用于测试:

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

但我无法将文本中的'JogosOlímpicosdeSidney'与我的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'这样的单词。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

据我所知,重音不是问题。 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)])

答案 1 :(得分:0)

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

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