【问题标题】:Omitting first word and removing words which are part of another word省略第一个单词并删除属于另一个单词的单词
【发布时间】:2021-08-05 09:58:26
【问题描述】:

假设我有一个字符串列表,例如 -

lst = ['bed frame', 'queen bed', 'queen bedding', 'queen bed frame', 'queen bedroom', 'bedroom', 'queen b', 'queen be', 'queen bed fra', 'queen bed fr', 'bed frame queen', 'bedroom furniture', 'queen bed fram', 'queen bed f', 'queen frame', 'queen m', 'queen ma', 'bed queen', 'queen s', 'cosmoliving']

这里的'queen be'和'queen b'之类的字符串将被转换为'queen',即删除'b'或'be',因为它们是'bed'的一部分(('queen bed'))。 “大床架”也是如此。

如果我有这个-

def xyz(uncorrected):
corrected = []
for words in uncorrected:
    string_split = words.split(' ',1)
    for keywords in uncorrected:
        string_split2 = keywords.split(' ',1)
        if string_split[1] != string_split2[1] and string_split[1] in string_split2[1]:
            joining = ' '.join(map(str, string_split2))
corrected.append(joining)
return corrected

但是这段代码没有给出所需的输出 -

lst = ['bed frame', 'queen bed', 'queen bedding', 'queen bed frame', 'queen bedroom', 'bedroom', 'queen', 'queen', 'queen bed', 'queen bed', 'bed frame queen', 'bedroom furniture', 'queen bed', 'queen bed', 'queen frame', 'queen m', 'queen ma', 'bed queen', 'queen s', 'cosmoliving']

它给出的输出 -

lst = ['frame', 'queen', 'queen bedding', 'queen frame', 'queen bedroom', '', 'queen', 'queen', 'queen', 'queen', 'frame queen', 'bedroom furniture', 'queen', 'queen', 'queen frame', 'queen', 'queen ma', 'queen', 'queen', '']

【问题讨论】:

  • 你怎么知道"bed"是一个完整的单词?
  • 我们不需要知道,任何属于更大单词的单词都必须删除。

标签: python string list


【解决方案1】:
  • 首先,创建一个将所有句子拆分为单词的新列表。 (我们称之为 search_lst)。
  • 然后您将需要一个嵌套循环。首先遍历您的主列表,然后遍历单词。
  • 如果该词不在 search_lst 中,则附加该词。

例子:

lst = ['queen bed', 'queen be', 'queen b',
       'queen bed frame', 'queen bed fr', 'queen bed fra']

lst2 = []

search_lst = [y for z in lst for y in z.split()]

for x in lst:
    temp = []
    for y in x.split():
        
        if y != x and not any(y in z for z in search_lst if y!=z):
            temp.append(y)

    lst2.append(' '.join(temp))

print(lst2)

输出:

['queen bed', 'queen', 'queen', 'queen bed frame', 'queen bed', 'queen bed']

【讨论】:

  • 谢谢!但这正在做的是,它从列表中删除任何单个单词。我将编辑相同的问题。请看。
  • @Prakket bed 是新数据中bedroombedding 的一部分,因此已将其删除。正如 schobaseggl 所问的那样,您应该告诉我们您如何确定一个单词是一个完整的单词。
  • 不,那很好。我是说从列表中删除长度为 1 的字符串,例如“cosmoliving”。
  • @Prakket remove if y != x 条件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多