【发布时间】:2019-03-19 10:20:21
【问题描述】:
我想在法语单词列表中加入两个用星号 (*) 分隔的单词。加入这些词后,我想检查这个词是否存在于法语词典中。如果是,则连接的单词应保留在列表中,否则应附加到另一个列表中。我在我的代码中使用了 yield (我是这个函数的新手),但是我的嵌套 if/else 循环有问题。任何人都可以帮助我实现我的目标吗?我不成功的代码如下:
words = ['Bien', '*', 'venue', 'pour', 'les','engage', '*', 'ment','trop', 'de', 'YIELD', 'peut','être','contre', '*', 'productif' ]
with open ('Fr-dictionary.txt') as fr:
dic = word_tokenize(fr.read().lower())
l=[ ]
def join_asterisk(ary):
i, size = 0, len(ary)
while i < size-2:
if ary[i+1] == '*':
if ary[i] + ary[i+2] in dic:
yield ary[i] + ary[i+2]
i+=2
else: yield ary[i]
i+=1
l.append(ary[i] + ary[i+2])
if i < size:
yield ary[i]
print(list(join_asterisk(words)))
【问题讨论】:
-
也许是
Fr-dictionary.txt的样本和所需的输出? -
显示预期结果
-
首先,我建议摆脱索引并使用
for w1, w2, w3 in zip(words, words[1:], words[2:])之类的东西只能访问连续的三个单词。它将帮助您思考并使您的代码更易于阅读。
标签: python if-statement while-loop yield