python:从列表中的元素中删除单引号。属性错误: 'list'对象没有属性'split'



从这个列表

lst=['a,b,c','d,e']

我想获得以下一个

lst=['a','b','c','d','e']

所以我认为首先应该删除第一个列表中的引号,但是这一行

[i for i in lst.split(' ' ' ')]

产生如下错误信息:AttributeError: 'list' object has no attribute 'split'

我应该如何修改我的代码来得到我需要的?

我知道我已经回答了,我只是注意到,由于元素是字符串并且有逗号分隔,您可以在列表上使用str.join,然后只使用str.split结果来获得所需的输出:

','.join(lst).split(',')

>>> lst = ['a,b,c','d,e']
>>> ','.join(lst).split(',')
['a', 'b', 'c', 'd', 'e']

注意,这在这种情况下有效,但只是因为您的特定值。

如果您想使用列表推导式,它将看起来像这样:

[y for x in lst for y in x.split(',')]

错误是因为您在list上调用split,但您需要在str上调用它。for x in lst为您提供字符串作为x,然后您调用split(',')以获得y,这是最终列表中的内容。

这相当于:

output = []
for x in lst:
for y in x.split(','):
output.append(y)

您应该首先遍历lst列表中的每个文本,以逗号分隔这些文本,然后将分割文本的字符平铺成如下所示的列表:

lst=['a,b,c','d,e']
character_lst = [char for text in lst for char in lst.split(",")
# character_list will contain ['a','b','c','d','e']

使用itertools.chain:

from itertools import chain
list(chain(*(s.split(',') for s in lst)))

或(较慢的)全功能变体:

from itertools import chain
list(chain(*map(lambda x: x.split(','), lst)))

输出:

['a', 'b', 'c', 'd', 'e']

没有导入或嵌套循环:

lst = ['a,b,c','d,e']
output = []
for x in lst:
output.extend(x.split(','))

相关内容

  • 没有找到相关文章

最新更新