我需要循环包含法语单词的列表并找到一个星号,因为每次出现星号时我想连接星号之前的单词和星号之后的单词并继续到下一个。
例如,在序列中:
['les','engage', '*', 'ment', 'de','la']
我想连接“engage”和“ment”,并且输出(engagement)应该由字典检查。如果在字典中,则附加到列表中。
使用我的代码,我只得到星号:
import nltk
from nltk.tokenize import word_tokenize
import re
with open ('text-test.txt') as tx:
text =word_tokenize(tx.read().lower())
with open ('Fr-dictionary.txt') as fr:
dic = word_tokenize(fr.read().lower())
ast=re.compile(r'[\*]+')
regex=list(filter(ast.match,text))
valid_words=[]
invalid_words=[]
last = None
for w in text:
if w in regex:
last=w
a=last + w[+1]
break
if a in dic:
valid_words.append(a)
else:
continue
Pythonic 的方式不是思考“时间旅行”(即来回),而是思考功能(时间旅行在资源非常有限的环境中占有一席之地)。
一种方法是采用 @Yosufsn 所示的枚举方式。另一个是zip
列表本身,但两侧都附加了填充。像这样:
words = ['les','engage', '*', 'ment', 'de','la']
for a,b,c in zip([None]*2+words, [None]+words+[None], words+[None]*2):
if b == '*':
print( a+c )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)