如何拆分列表元素并根据空格分隔符替换它们?

时间:2019-06-20 07:13:48

标签: python python-3.x list

我试图基于空格分隔符来拆分我拥有的list的元素,并用新拆分的字符串替换正在拆分的字符串。

到目前为止,我已经尝试过使用split函数拆分字符串,但是无法将拆分元素(或字符串)附加到我的原始列表中。 我尝试在列表项上使用join,但这给了我语法错误。

这是我到目前为止尝试过的:

my_list = [
    'my_label2 new_label2 my_label',
    'label_test1 label_test2 label_test3',
    'my_label2 new_label2 my_label'
]

for item in my_list:
    if ' ' in item:
        print(True)
        my_list.append(i)
        print(i)
    else:
        print(False)

print(my_list)

但是我的代码没有给我预期的结果。 我得到的结果list是:

['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label', ['my_label2', 'new_label2', 'my_label'], ['label_test1', 'label_test2', 'label_test3'], ['my_label2', 'new_label2', 'my_label']]

但是我实际上想要得到的是这样的:

原始列表:

['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']

新列表:

['my_label2', 'new_label2',  'my_label', 'label_test1', 'label_test2, 'label_test3', 'my_label2', 'new_label2', 'my_label']

5 个答案:

答案 0 :(得分:3)

str.splitchain.from_iterable一起使用

Ex

from itertools import chain
my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
print(list(chain.from_iterable(i.split() for i in my_list))) 

输出:

['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']

答案 1 :(得分:2)

extend()-用于合并两个列表或在一个列表中插入多个元素。

split()-用指定的分隔符将给定的字符串分隔开后,返回字符串列表。默认情况下,split()将空格用作分隔符。

my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list=[]
for elm in my_list:
    new_list.extend(elm.split(" "))

print(new_list)

O / P:

['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']

答案 2 :(得分:1)

那又怎么样:

import itertools

my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']

new_list = itertools.chain(*[l.split() for l in my_list])
print(list(new_list))  # >> ['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']
通过itertools内置库中的

chains,您可以将2个以上的可迭代对象链接为一个。

答案 3 :(得分:1)

尝试一下

>>> my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']

输出:

>>> [j for i in my_list for j in i.split()]

['my_label2', 'new_label2', 'my_label', 'label_test1', 'label_test2', 'label_test3', 'my_label2', 'new_label2', 'my_label']

答案 4 :(得分:0)

这件作品可以得出结果,但这是最好的方法吗?

my_list = ['my_label2 new_label2 my_label', 'label_test1 label_test2 label_test3', 'my_label2 new_label2 my_label']
new_list = []
for item in my_list:
    new_list.extend(item.split())
my_list.clear()
my_list.extend(new_list)
print(my_list)