Python 如何合并特定单词的嵌套列表元素

Python 如何合并特定单词的嵌套列表元素,python,Python,我真的很希望有人能帮我解决一个可能很简单的问题,但作为python的新手,我很挣扎 我有以下嵌套列表: [['bob', 'smith', 'green'], ['jon', 'mc', 'donnell', 'red'], ['fred', 'thomas', 'blue'], ['jim', 'mc', 'donald', 'orange']] 我想对它进行迭代,以下面这样的内容结束,以写入csv并在excel中打开: [['bob', 'smith', 'green'], ['jon',

我真的很希望有人能帮我解决一个可能很简单的问题,但作为python的新手,我很挣扎

我有以下嵌套列表:

[['bob', 'smith', 'green'],
['jon', 'mc', 'donnell', 'red'],
['fred', 'thomas', 'blue'],
['jim', 'mc', 'donald', 'orange']]
我想对它进行迭代,以下面这样的内容结束,以写入csv并在excel中打开:

[['bob', 'smith', 'green'],
['jon', 'mcdonnell', 'red'],
['fred', 'thomas', 'blue'],
['jim', 'mcdonald', 'orange']]
我尝试了一个包含“mc”的if语句的for循环,但它仅以行中的“mcdonnell”结尾


我试图添加代码,但我不断收到一个错误,说缩进4个空格,我这样做了,但它仍然不喜欢它,所以不确定我缺少了什么。

您可以这样做

names=[['bob','smith','green'],
['jon'、'mc'、'donnell'、'red'],
[“弗雷德”、“托马斯”、“蓝色”],
['jim','mc','donald','orange']]
对于名称中的名称:
如果名称[1]=“mc”:
concat_middle=name.pop(1)+name.pop(1)
名称.插入(1个,中心)

假设您总是希望将
'mc'
之后的下一个直接单词连接到它。您可以使用
iter
并利用
next
进行尝试

a=[['bob', 'smith', 'green'],
['jon', 'mc', 'donnell', 'red'],
['fred', 'thomas', 'blue'],
['jim', 'mc', 'donald', 'orange']]

[[i+next(it) if i=='mc' else i for i in it] for it in map(iter,a)]

输出:

[['bob', 'smith', 'green'],
 ['jon', 'mcdonnell', 'red'],
 ['fred', 'thomas', 'blue'],
 ['jim', 'mcdonald', 'orange']]

我假设这是您想要的行为:对于列表列表,您希望将列表的第2和第3个元素与4个元素合并

详细的解决方案:

对于i,枚举中的数组(数组中的数组):
如果len(数组)==4:
中间=数组[1]+数组[2]
数组中的数组[i]=[数组[0],中间,数组[3]]

注意:我使用Python的
enumerate
方法,该方法返回一个数组作为一对索引和相应的元素。

请添加代码,以便我们能够清楚地了解错误所在。在一个新行中写下“``你的代码在这里```。你能显示你编码的循环吗?同样在你的最终输出中,你想忽略列表中的所有“mc”吗?你总是想将“mc”后面的下一个直接单词连接到它吗?告诉你如何从一个输入列表到所需的输出列表的确切规则是什么?除了“mc”之外,你还在乎前缀吗?您是否关心给定输入中是否有多个空格?非常感谢Ch3steR,这很有效虽然我需要在合并字符串之间使用相同的元素,但有没有简单的方法可以使用您提供的代码添加空格?@freddy2020是的,只需使用
I+''+下一步(it)
取而代之或干净的方法是使用f字符串。这是可行的,但不确定如何包含在脚本中。我有以下内容:对于name_line in name_-brief:name_-split=name_-line.split()name_-brief_-list.append(name_-split)[[I+''+next(it)if I==“mc”else I for I in it]对于map(iter,name_-brief_-list)],带有open(get_-name-brief_-filename(),'w',换行='')作为f:writer=csv.writer(f,delimiter=,'writer.writerows(name_-brief_-list)并添加了您根据上述提供的代码,但电子表格中的结果仍在单独的列中,我是否有不正确的位置?非常感谢Swedar,这对该脚本起到了作用,但我还有其他具有不同字符串的脚本,我需要将其中一些字符串与上述空格合并,我尝试将“if(len(name))>3:”更改为“if name=='mc':”但它没有改变任何东西,我想我误解了代码或用法?哦,你想只在有“mc”的情况下合并这两个索引吗?我已经编辑了我的答案!