如何将string拆分为字符数组?

我试图寻找networking周围的答案将string拆分成一个字符数组,但我似乎无法find一个简单的方法

str.split(//)似乎不像Ruby那样工作。 有没有循环做这个简单的方法?

 >>> s = "foobar" >>> list(s) ['f', 'o', 'o', 'b', 'a', 'r'] 

你需要列表

你把这个string传给list()

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

你也可以用这个非常简单的方法来做,而不用list():

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

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

第一个很简单:

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

第二个使用maplambda函数。 这对于更复杂的任务可能是适当的:

 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文档

这个任务归结为迭代string的字符并将其收集到列表中。 最天真的解决scheme看起来像

 result = [] for character in string: result.append(character) 

当然,它可以缩短到只是

 result = [character for character in string] 

但仍然有更短的解决scheme,做同样的事情。

list构造函数可用于将任何可迭代的 (迭代器,列表,元组,string等)转换为列表。

 >>> list('abc') ['a', 'b', 'c'] 

最重要的是它在Python 2和Python 3中都是一样的。

另外,从Python 3.5开始(感谢真棒PEP 448 ),现在可以通过将它解压缩到一个空列表文字来从任何迭代中构build一个列表:

 >>> [*'abc'] ['a', 'b', 'c'] 

这样做比较简单,在某些情况下比直接调用list构造函数更有效。

我build议不要使用基于map的方法,因为map不会返回Python 3中的列表。请参阅如何在Python 3 中使用filter,映射和减less

假设有string名称txt。

 '''Python 2.7''' txt = 'India' arr = list(txt) print arr 

如果你想一次处理你的string一个字符。 你有各种select。 uhello = u'Hello \ u0020World'

输出: ['H','e','l','l','o','','W','o','r ','l','d']

使用map: 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)

简单:

 s = 'My' print(list(s)) 

如果您只想读取string的访问权限,则可以直接使用数组表示法。

 Python 2.7.6 (default, Mar 22 2014, 22:59:38) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> t = 'my string' >>> t[1] 'y' 

可以用于testing而不使用正则expression式。 string是否包含结尾换行符?

 >>> t[-1] == '\n' False >>> t = 'my string\n' >>> t[-1] == '\n' True 

好吧,就像我喜欢列表版本一样,这是另一个更详细的方式,我发现(但它很酷,所以我想我会把它添加到战争中):

 >>> text = "My hovercraft is full of eels" >>> [text[i] for i in range(len(text))] ['M', 'y', ' ', 'h', 'o', 'v', 'e', 'r', 'c', 'r', 'a', 'f', 't', ' ', 'i', 's', ' ', 'f', 'u', 'l', 'l', ' ', 'o', 'f', ' ', 'e', 'e', 'l', 's'] 
 >>> for i in range(len(a)): ... print a[i] ... 

其中a是要分离出来的string。 值“a [i]”是可以附加到列表中的string的单个字符。