基于索引的python字符串拆分
这听起来很基本,但我还没有想到一个简单明了的方法在Python中实现这一点 我有一个类似于基于索引的python字符串拆分,python,string,Python,String,这听起来很基本,但我还没有想到一个简单明了的方法在Python中实现这一点 我有一个类似于“abcdefgh”的字符串,我需要创建一个元素列表,每次从字符串中选取两个字符,以获得['ab'、'cd'、'ef'、'gh'] 我现在正在做的是 output = [] for i in range(0,len(input),2): output.append(input[i:i+2]) 有更好的方法吗 In [2]: s = 'abcdefgh' In [3]: [s[i:i+2] for
“abcdefgh”
的字符串,我需要创建一个元素列表,每次从字符串中选取两个字符,以获得['ab'、'cd'、'ef'、'gh']
我现在正在做的是
output = []
for i in range(0,len(input),2):
output.append(input[i:i+2])
有更好的方法吗
In [2]: s = 'abcdefgh'
In [3]: [s[i:i+2] for i in range(0, len(s), 2)]
Out[3]: ['ab', 'cd', 'ef', 'gh']
有更好的方法吗
In [2]: s = 'abcdefgh'
In [3]: [s[i:i+2] for i in range(0, len(s), 2)]
Out[3]: ['ab', 'cd', 'ef', 'gh']
当然。列表理解可以做到这一点
def n_chars_at_a_time(s, n=2):
return [s[i:i+n] for i in xrange(0, len(s), n)]
你应该做你想做的。s[i:i+n]
返回从i
开始并在以后以n
字符结束的子字符串
n_chars_at_a_time("foo bar baz boo", 2)
产生
['fo', 'o ', 'ba', 'r ', 'ba', 'z ', 'bo', 'o']
在python REPL中
有关更多信息,请参阅:
迭代器输出上的两个常见操作是
只是为了好玩,如果你讨厌
>>> s='abcdefgh'
>>> map(''.join, zip(s[::2], s[1::2]))
['ab', 'cd', 'ef', 'gh']
相关:我可能只是不喜欢那里的for循环。我就是这么想的。或者
map('''.join,zip(*[iter(s)]*2))
。