我有一个我希望在文本中找到的大约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'这样的单词。有什么想法吗?
答案 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(' ')