簡體   English   中英

串聯python列表中的單個元素

[英]Concatenate single elements in python 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

但是我不確定這是正確的方法。 任何幫助,將不勝感激!

您走在正確的軌道上,但不需要第二循環:

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 двигаться', 'сторона признание и']]

您可以使用拆分功能檢查其是否為單個單詞。 如果使用split函數,您甚至可以檢查是否也有帶有tabs(\\ t)的字符串。

for ele in lst:
    if len(ele[-1].split())==1:
        new = ele[-2]+" "+ele[-1]
        del ele[-2:]
        ele.append(new)

一種方法可能是嘗試使用list comprehension ,如下所示:

[item[:-2]+ [' '.join(item[-2:])] 
                          if len(item[-1].split()) == 1 else item for item in lst ]

它在內部列表中查找最后一項,調用split並檢查長度。 如果length為1,則它將占用其余元素(最后2個除外),並最后加入列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM