连接python列表中的单个元素

时间:2018-06-05 06:09:33

标签: python string python-3.x list

我有一个这样的嵌套列表:

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

但我不确定这是正确的方法。任何帮助将不胜感激!

3 个答案:

答案 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个元素之外它将占用剩余的元素并且最后加入到列表中。