如何在Python中将字符串拆分为字符
我有一个字符串 'ABCDEFG',我想把每个字符按顺序列出来,后面跟着下一个字符。
比如:
A B
B C
C D
D E
E F
F G
G
你能告诉我一个简单有效的方法来做到这一点吗?谢谢!
6 个回答
0
如果你想在字符之间留出空格,可以使用 zip
函数和列表推导式:
>>> s="ABCDEFG"
>>> l=[' '.join(i) for i in zip(s,s[1:])]
['A B', 'B C', 'C D', 'D E', 'E F', 'F G']
>>> for i in l:
... print i
...
A B
B C
C D
D E
E F
F G
如果你不想留空格,只需使用列表推导式:
>>> [s[i:i+2] for i in range(len(s))]
['AB', 'BC', 'CD', 'DE', 'EF', 'FG', 'G']
0
这里有一个关于 itertools 中的 pairwise 例子,正好适合这种情况:
import itertools
def pairwise(myStr):
a,b = itertools.tee(myStr)
next(b,None)
for s1,s2 in zip(a,b):
print(s1,s2)
输出结果:
In [121]: pairwise('ABCDEFG')
A B
B C
C D
D E
E F
F G
1
def doit(input):
for i in xrange(len(input)):
print input[i] + (input[i + 1] if i != len(input) - 1 else '')
doit("ABCDEFG")
这段代码的结果是:
>>> doit("ABCDEFG")
AB
BC
CD
DE
EF
FG
G
2
你需要保留最后一个字符,所以可以使用 itertools
里的 izip_longest
。
>>> import itertools
>>> s = 'ABCDEFG'
>>> for c, cnext in itertools.izip_longest(s, s[1:], fillvalue=''):
... print c, cnext
...
A B
B C
C D
D E
E F
F G
G
3
在Python中,字符串本身就可以看作是一个字符的列表,所以你不需要去拆分它;它已经是“拆分”的状态了。你只需要构建你的子字符串列表。
不太清楚你想要的结果是什么样的。如果你只是想要子字符串,这样做就可以:
s = 'ABCDEFG'
[s[i:i+2] for i in range(len(s))]
#=> ['AB', 'BC', 'CD', 'DE', 'EF', 'FG', 'G']
如果你想要的结果是列表形式的对,而不是字符串,只需要对每一个调用一下 list
就可以了:
[list([s[i:i+2]) for i in range(len(s))]
#=> [['A', 'B'], ['B', 'C'], ['C', 'D'], ['D', 'E'], ['E', 'F'], ['F', 'G'], ['G']]
如果你最后还是想要字符串,但希望字母之间有空格,可以在调用 list
后把它们再连接起来:
[' '.join(list(s[i:i+2])) for i in range(len(s))]
#=> ['A B', 'B C', 'C D', 'D E', 'E F', 'F G', 'G']