Python将字符串列表拆分为包含原始字符串的列表列表

时间:2019-05-21 16:50:54

标签: python string list

这类似于将字符串列表拆分为字符串列表,但是我希望将原始字符串的副本作为来自它的列表元素。目的是我想从文件名中解析出元素,但我想保留文件名,因此在使用单词匹配列表之后,文件名就可以使用了,所以我可以使用它来做一些事情。

例如

stringList = ["wordA1_wordA2_wordA3","wordB1_wordB2_wordB3"] 

成为

splitList = [["wordA1_wordA2_wordA3","wordA1","wordA2","wordA3"],
           ["wordB1_wordB2_wordB3","wordB1","wordB2","wordB3"]]

我正在尝试通过单个命令来实现列表理解

我最近得到的是:

splitList=[[item,item.split('_')] for item in stringList]

产生:

splitList = [["wordA1_wordA2_wordA3",["wordA1","wordA2","wordA3"]],
           ["wordB1_wordB2_wordB3",["wordB1","wordB2","wordB3"]]

我可以解决这个问题,但是我想知道是否有人可以向我学习一些更优雅的建议。

我尝试过

splitList=[item.split('_') + item for item in stringList]

抱怨没有将列表连接到str

splitList=[item.split('_').append(item) for item in stringList]

会创建“无”列表

2 个答案:

答案 0 :(得分:2)

您可以使用*解压缩拆分列表:

splitList=[[item,*item.split('_')] for item in stringList]

为您提供通缉犯

splitList = [["wordA1_wordA2_wordA3","wordA1","wordA2","wordA3"],
           ["wordB1_wordB2_wordB3","wordB1","wordB2","wordB3"]]

编辑:您还可以执行以下操作:

splitList=[[item] + item.split('_') for item in stringList]

处理字符串和列表的串联。 [item]只需创建一个包含单个项目item的列表,然后将其与拆分列表连接起来。

答案 1 :(得分:1)

@media only screen and (max-width: 768px) { .carousel-header-container { /* Content block 1 */ position: relative; width: 100%; height: auto; top: 0%; left: 0%; overflow: hidden; } .carousel-content-row { /* Content block 2 */ position: relative; width: 100%; height: 5em; } } 返回[item.split('_').append(item)...]是因为None是就地修饰符,并且没有返回值。

在这里使用list.append而不是dict的{​​{1}}可能会更有优势,因为文件名可以是您的密钥,而各个组成部分可以是您的密钥值:

list

但是,如果您需要列表:

lists

stringList = ["wordA1_wordA2_wordA3","wordB1_wordB2_wordB3"] string_dict = {filename: filename.split("_") for filename in stringList} # {'wordA1_wordA2_wordA3': ['wordA1', 'wordA2', 'wordA3'], 'wordB1_wordB2_wordB3': ['wordB1', 'wordB2', 'wordB3']} 使用processed_list = [[filename, *filename.split("_")] for filename in stringList] # [['wordA1_wordA2_wordA3', 'wordA1', 'wordA2', 'wordA3'], ['wordB1_wordB2_wordB3', 'wordB1', 'wordB2', 'wordB3']] 将结果列表从[filename, *filename.split("_")]解压缩到当前列表中