【发布时间】:2019-08-07 13:21:57
【问题描述】:
我想在单词列表中连接一个由星号分隔的单词。我正在尝试的代码是:
import nltk
from nltk.tokenize import word_tokenize
import re
words = ['les','engage', '*', 'ment', 'de','la']
with open ('Fr-dictionary.txt') as fr:
dic = word_tokenize(fr.read().lower())
l=[ ]
errors=[ ]
for n,word in enumerate (words):
l.append(word)
if word == "*":
print(words[n-1], words[n+1])
exp = words[n-1] + words[n+1]
if exp in dic:
l.append(exp)
errors.append(words[n-1])
errors.append("*")
errors.append(words[n+1])
else:
continue
print(l)
print(errors)
l=frozenset(l)
errors=frozenset(errors)
c=l.difference(errors)
print(list(c))
我的输出是:
['la', 'les', 'de', 'engagement']
但我想要的输出必须与原始列表的顺序相同,没有:
['les','engagement', 'de','la']
还有其他方法可以获得所需的输出吗?
【问题讨论】:
-
试过join()函数?它可以带分隔符。你可以不用所有的循环。
-
套装没有顺序,所以你不能期望使用它们有任何特定的顺序。
-
将您的集合转换为集合。这样可以保持秩序。
-
@IrfanuddinShafi,在附加连接的单词后,我想删除单词的第一部分,星号和单词的第二部分:“engage”、“*”、“ment”
-
@IrfanuddinShafi,如何将集合转换为集合?可以展示一下吗?
标签: python list loops set concatenation