如何在Python中将字符串转换为列表?

Cli*_*Hui 106 python arrays string

如何将字符串转换为列表?

说字符串就像text = "a,b,c".转换后,text == ['a', 'b', 'c']希望text[0] == 'a',text[1] == 'b'

Cam*_*ron 170

像这样:

>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Run Code Online (Sandbox Code Playgroud)

或者,eval()如果您信任该字符串是安全的,则可以使用:

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Run Code Online (Sandbox Code Playgroud)

  • 友情提醒:即使您信任该字符串是安全的,也不要使用eval.除了个人脚本和在交互式shell中摆弄之外,不值得潜在的安全隐患. (7认同)
  • eval('['+ text +']')将a,b,c视为变量,而不是字符串. (3认同)
  • 这不是一个数组,它是一个列表,Arrays表示基本值,其行为与列表非常相似,只是存储在其中的对象类型受到约束. (2认同)
  • 被否决是因为两个提议的解决方案做的事情完全不同,这在答案文本中没有以任何方式解释。虽然问题本身并不是很清楚,但应该在答案中明确指出这两种解决方案不是等效的替代方案,而是对问题的不同解释。 (2认同)

Dro*_*ans 139

只是为了补充现有答案:希望您将来会遇到更多这样的事情:

>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Run Code Online (Sandbox Code Playgroud)

但是,你正在处理什么用,现在,一起去@ 卡梅隆的回答.

>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Run Code Online (Sandbox Code Playgroud)

  • 尽管我同意@Cameron的答案是“现在”的答案,但我认为您的透彻理解使它成为更正确的答案。在现实世界中,很少给我们提供用逗号分隔的字符串,并且最好知道如何转换为列表,而不考虑格式。 (4认同)

小智 32

以下Python代码将您的字符串转换为字符串列表:

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
Run Code Online (Sandbox Code Playgroud)

  • 他们还可以使用“json”,例如:“json.loads(teststr)” (5认同)

fir*_*ynx 18

我不认为你需要

在python中,你很少需要将字符串转换为列表,因为字符串和列表非常相似

改变类型

如果你真的有一个应该是字符数组的字符串,请执行以下操作:

In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Run Code Online (Sandbox Code Playgroud)

不改变类型

请注意,字符串非常类似于python中的列表

字符串具有访问器,如列表

In [3]: x[0]
Out[3]: 'f'
Run Code Online (Sandbox Code Playgroud)

字符串是可迭代的,就像列表一样

In [4]: for i in range(len(x)):
...:     print x[i]
...:     
f
o
o
b
a
r
Run Code Online (Sandbox Code Playgroud)

TLDR

字符串是列表.几乎.


joa*_*uin 7

如果你真的想要数组:

>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'
Run Code Online (Sandbox Code Playgroud)

如果您不需要数组,并且只想通过索引查找字符,请记住字符串是可迭代的,就像列表一样,只是它是不可变的:

>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Run Code Online (Sandbox Code Playgroud)


小智 7

如果要按空格分割,可以使用.split()

a = 'mary had a little lamb'
z = a.split()
print z
Run Code Online (Sandbox Code Playgroud)

输出:

['mary', 'had', 'a', 'little', 'lamb'] 
Run Code Online (Sandbox Code Playgroud)

  • 我编辑了答案,使其具有更多价值。 (2认同)

小智 5

m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)


Zeu*_*eus 5

所有答案都很好,还有另一种方法,即列表理解,请参阅下面的解决方案。

u = "UUUDDD"

lst = [x for x in u]
Run Code Online (Sandbox Code Playgroud)

对于逗号分隔的列表,请执行以下操作

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]
Run Code Online (Sandbox Code Playgroud)