Python 如何拆分列表元素并基于空格分隔符替换它们?
我正在尝试根据空格分隔符拆分我拥有的Python 如何拆分列表元素并基于空格分隔符替换它们?,python,python-3.x,list,Python,Python 3.x,List,我正在尝试根据空格分隔符拆分我拥有的列表的元素,并用新拆分的字符串替换正在拆分的字符串 到目前为止,我已经尝试了这个方法,我使用了split函数来拆分字符串,但是我无法将拆分的元素(或字符串)追加到原始列表中。 我尝试在列表项上使用join,但这给了我一个语法错误 以下是我迄今为止所做的尝试: myu列表=[ “my_label2 new_label2 my_label”, “标签测试1标签测试2标签测试3”, “我的标签2新的标签2我的标签” ] 对于my_列表中的项目: 如果项目中有“”:
列表的元素
,并用新拆分的字符串替换正在拆分的字符串
到目前为止,我已经尝试了这个方法,我使用了split
函数来拆分字符串,但是我无法将拆分的元素(或字符串)追加到原始列表中。
我尝试在列表项上使用join
,但这给了我一个语法错误
以下是我迄今为止所做的尝试:
myu列表=[
“my_label2 new_label2 my_label”,
“标签测试1标签测试2标签测试3”,
“我的标签2新的标签2我的标签”
]
对于my_列表中的项目:
如果项目中有“”:
打印(真)
我的清单。附加(i)
印刷品(一)
其他:
打印(假)
打印(我的列表)
但是我的代码没有给出预期的结果。
我得到的结果列表
是:
['my_label2 new_label2 my_label','label_test1 label_test2 label_test3','my_label2 new_label2 my_label2',['my_label2','label_test1','label_test2','label_test3',['my_label2','new_label2','my_label2']
但我实际上想得到的是这样的东西:
原始列表:
['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']
>>> [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']
新列表:
['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']
>>> [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']
那么:
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']
链
,从内置库,您可以将2个以上的iterables链成一个。如何:
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']
chains
,从内置库中,允许您将2个以上的iterable链接成一个。使用str.split
和chain.from\u 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']
['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']
>>> [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']
使用
str.split
和chain.from\u 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']
['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']
>>> [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']
试试这个
>>> my_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']
>>> [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']
试试这个
>>> my_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']
>>> [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']
-用于合并两个列表或在一个列表中插入多个元素
-通过指定的分隔符打断给定字符串后,返回字符串列表。默认情况下,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:
-用于合并两个列表或在一个列表中插入多个元素
-通过指定的分隔符打断给定字符串后,返回字符串列表。默认情况下,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_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)
这件作品可以给出结果,但这是最好的方法吗
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)
这可以在命令提示符下工作,但不能在python脚本中工作passed@PDoe是否已复制并粘贴代码?如果使用
i
,则只有您才能获得相同的列表,而不是j
。这在命令提示符中对我有效,但在python脚本中无效。输出是相同的列表passed@PDoe是否已复制并粘贴代码?如果使用i
,则只有您才能得到相同的列表,而不是j
。在循环使用列表时,您不应对其进行变异或修改。始终创建一个新列表,并保持旧列表的原样。在循环使用列表时,绝对不应对其进行变异或修改。始终创建一个新列表,并保持旧列表不变。