如何将字符串分割为字符列表?Str.split不起作用。

"foobar"    →    ['f', 'o', 'o', 'b', 'a', 'r']

当前回答

将字符串传递给list()

s = "mystring"
l = list(s)
print l

其他回答

将字符串传递给list()

s = "mystring"
l = list(s)
print l

如果你想一次处理一个字符串字符。你有多种选择。

uhello = u'Hello\u0020World'

使用列表推导式:

print([x for x in uhello])

输出:

['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

使用地图:

print(list(map(lambda c2: c2, uhello)))

输出:

['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

调用内置列表函数:

print(list(uhello))

输出:

['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

使用for循环:

for c in uhello:
    print(c)

输出:

H
e
l
l
o

W
o
r
l
d

要分割字符串s,最简单的方法是将其传递给list()。所以,

s = 'abc'
s_l = list(s) #  s_l is now ['a', 'b', 'c']

你也可以使用列表推导式,这是可行的,但不像上面那样简洁:

s_l = [c for c in s]

当然还有其他方法,但这些方法就足够了。 之后,如果你想重新组合它们,简单地调用"".join(s_l)将使你的列表恢复到以前的字符串形式…

我探索了另外两种方法来完成这项任务。它可能对某人有帮助。

第一个很简单:

In [25]: a = []
In [26]: s = 'foobar'
In [27]: a += s
In [28]: a
Out[28]: ['f', 'o', 'o', 'b', 'a', 'r']

第二个使用map和函数。它可能适用于更复杂的任务:

In [36]: s = 'foobar12'
In [37]: a = map(lambda c: c, s)
In [38]: a
Out[38]: ['f', 'o', 'o', 'b', 'a', 'r', '1', '2']

例如

# isdigit, isspace or another facilities such as regexp may be used
In [40]: a = map(lambda c: c if c.isalpha() else '', s)
In [41]: a
Out[41]: ['f', 'o', 'o', 'b', 'a', 'r', '', '']

有关更多方法,请参阅python文档

你也可以用这种非常简单的方式来做,没有list():

>>> [c for c in "foobar"]
['f', 'o', 'o', 'b', 'a', 'r']