串联在不同列表中的单词片段

时间:2019-03-14 16:55:40

标签: python string list concatenation

我有两个单词/字符串列表:x和y。 x中某些单词的另一部分在y中,我想将它们连接起来,例如,我想将列表x中的``接合''一词与列表y中的其他部分``ments''或列表x中的``operation''连接起来列表y中的“ nelle”。我还需要检查一下字典,如果列表x中的每个单词/标记都存在于dic中,而串联的单词是否存在于dic中。如果是这样,请将其附加到另一个列表(文本)。我一直尝试失败的代码是:

import nltk
from nltk.tokenize import word_tokenize
x=['les', 'engage', 'président', 'de', 
'la', 'république', 'sont', 'aussi', 
'ceux', 'des', 'dirigeants', 'de', 'la', 
'société', 'ferroviaire', ',', 'a-t-il', 
'soutenu', 'de', 'élus', 'du', 'réunis', 
'à', '’', 'le', 'président', 'de', 'la', 
'république', ',', '(', 'à', 'droite', 
')', ',', 'aux', 'côtés', 'du', 'patron', 
'de', 'la', ',', 'guillaume', 'à', 'la', 
'gare', 'à', 'paris', ',', 'le', 
'juillet', 'der', '’', 'irrita', ',', 
'par', 'fois', ',', '’', 'usa', 'la', 
'face', 'aux', 'trains', 'supprimés', 
'aux', 'dessertes', 'abandonnées', 
'semble', 'avoir', 'aussi', 'saisi', 'le', 
'président', 'de', 'la', 'république', 
'.', 'devant', 'des', 'élus', 'du', ',', 
'réunis', 'mardi', 'février', 'à', '’', 
'le', 'cadre', 'du', 'grand', 'débat', 
',', 'a', 'eu', 'des', 'mots', 'très', 
'durs', 'contre', 'la', ',', 'qui', 'a', 
'fermé', 'la', 'ligne', '-', 'décembre', 
',', 'alors', 'que', 'le', 'chef', 'de', 
'’', '’', 'était', 'engagé', ',', 
'durant', 'un', 'déplacement', 'dans', 
'les', 'tué', 'en', 'avril', ',', 'à', 
'ce', '’', 'elle', 'reste', 'opération']


y=['ments', 'prési', 'républi', 'vant', 
'elysée', 'emmanuel', 'macron', 'cô', 
'pepy', 'montparnasse', 'geoffroy', 
'hasselt', '/', 'afp', 'tion', 'empare', 
'gers', 'més', 'elysée', 'emmanuel', 
'macron', 'epinal', 'etat', 'dépla', 
'cement', 'vosges', 'effec', 'nelle']

text=[ ]

with open ('Fr-dictionary.txt') as d:
dic = word_tokenize(d.read().lower())

for i in x:
  if i in dic:
    text.append(i)
  else:
    for j in y:
      concatenated = i + j
      if concatenated in dic:
        text.append(concatenated)

print(text)

这是怎么了?

1 个答案:

答案 0 :(得分:0)

好的,我设法使您的代码正常工作。

首先,我必须在nltk.download('punkt')之后添加import nltk

然后,我评论了我的解决方案,但可以随时询问是否不清楚:

cat_x_y = []
text = []

with open ('Fr-dictionary.txt') as d:
    dic = word_tokenize(d.read().lower())

#for each word in x check if they are in the dictonary 
for word in x:
    if word in dic:
        text.append(word)
#same for y
for word in y:
    if word in dic:
        text.append(word)

#for each word in x I want to add y and put it in cat_x_y
for i in range(len(x)):
    for word in y:
        cat_x_y.append(x[i]+word)

#for each word in y I want to add x and put it in cat_x_y
for j in range(len(y)):
    for word in x:
        cat_x_y.append(y[j]+word)

#remove duplicate in the cat_x_y:
cat_x_y = list(dict.fromkeys(cat_x_y))

#for each word in cat_x_y add the to text if they are in the dictionary
for word in cat_x_y:
    if word in dic:
        text.append(word)

#remove duplicate from text
text = list(dict.fromkeys(text))
print(text)

我假设您要检查来自x的单词和来自y的单词。 但也尝试添加x + y和y + x

这是我执行代码时得到的词: ['les', 'engage', 'président', 'de', 'la', 'république', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'société', 'ferroviaire', 'a-t-il', 'soutenu', 'élus', 'du', 'réunis', 'à', 'le', 'droite', 'aux', 'côtés', 'patron', 'guillaume', 'gare', 'paris', 'juillet', 'der', 'irrita', 'par', 'fois', 'usa', 'face', 'trains', 'supprimés', 'dessertes', 'abandonnées', 'semble', 'avoir', 'saisi', 'devant', 'mardi', 'février', 'cadre', 'grand', 'débat', 'a', 'eu', 'mots', 'très', 'durs', 'contre', 'qui', 'fermé', 'ligne', 'décembre', 'alors', 'que', 'chef', 'était', 'engagé', 'durant', 'un', 'déplacement', 'dans', 'tué', 'en', 'avril', 'ce', 'elle', 'reste', 'opération', 'engagements', 'lavant', 'lamés', 'lacement', 'levant', 'irritation', 'usagers', 'avant', 'quenelle', 'cenelle', 'opérationnelle', 'préside', 'présides', 'présider', 'vantaux', 'vanta', 'mésusa', 'déplace', 'effectué']