如何将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']
第二个使用map
和lambda
函数。 这对于更复杂的任务可能是适当的:
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的单个字符。