我有一个这样的嵌套列表:
lst =[['Start двигаться', 'другая сторона света', 'надолго скоро'],
['Start двигаться', 'другая сторона света', 'чтобы посмотреть'],
['Start двигаться', 'новая планета'],
['Start двигаться', 'сторона признание', 'суверенитет израильский'],
['Start двигаться', 'сторона признание', 'высот', 'на'],
['Start двигаться', 'сторона признание', 'высот', 'оккупировать'],
['Start двигаться', 'сторона признание', 'высот', 'Голанский'],
['Start двигаться', 'сторона признание', 'и']]
我需要检查最后一个元素是否是单个单词,如果是,则将它与前一个元素连接起来。 期望的输出:
[['Start двигаться', 'другая сторона света', 'надолго скоро'],
['Start двигаться', 'другая сторона света', 'чтобы посмотреть'],
['Start двигаться', 'новая планета'],
['Start двигаться', 'сторона признание', 'суверенитет израильский'],
['Start двигаться', 'сторона признание', 'высот на'],
['Start двигаться', 'сторона признание', 'высот оккупировать'],
['Start двигаться', 'сторона признание', 'высот Голанский'],
['Start двигаться', 'сторона признание и']]
到目前为止,我考虑过检查空格的最后一个元素:
for i in lst:
for j in i:
if " " not in j[-1]:
do smth
但我不确定这是正确的方法。任何帮助将不胜感激!
答案 0 :(得分:3)
您已走上正轨,但您不需要第二轮:
for sublist in lst:
if ' ' not in sublist[-1]:
# merge the last two elements
text = '{} {}'.format(sublist[-2], sublist.pop())
sublist[-1] = text
# result:
# [['Start двигаться', 'другая сторона света', 'надолго скоро'],
# ['Start двигаться', 'другая сторона света', 'чтобы посмотреть'],
# ['Start двигаться', 'новая планета'],
# ['Start двигаться', 'сторона признание', 'суверенитет израильский'],
# ['Start двигаться', 'сторона признание', 'высот на'],
# ['Start двигаться', 'сторона признание', 'высот оккупировать'],
# ['Start двигаться', 'сторона признание', 'высот Голанский'],
# ['Start двигаться', 'сторона признание и']]
答案 1 :(得分:1)
您可以使用拆分功能检查是否只有一个单词。如果使用split函数,您甚至可以检查是否有带标签的字符串(\ t)。
for ele in lst:
if len(ele[-1].split())==1:
new = ele[-2]+" "+ele[-1]
del ele[-2:]
ele.append(new)
答案 2 :(得分:0)
一种方法可能是尝试npm install
,如下所示:
list comprehension
它查找内部列表中的最后一项,调用[item[:-2]+ [' '.join(item[-2:])]
if len(item[-1].split()) == 1 else item for item in lst ]
并检查长度。如果长度为1,那么除了最后2个元素之外它将占用剩余的元素并且最后加入到列表中。