在Python中从字符串中获取两个字符

7

如何在Python中获取两个字符而不是一个字符的字符串?

我有以下代码:

long_str = 'abcd'
for c in long_str:
   print c

而且它给我像

a
b
c
d

但我需要获取

ab
cd

我是Python的新手..有什么办法吗?


有关编程的内容:“在Python中,迭代列表的最pythonic方法是什么?”https://dev59.com/VHRC5IYBdhLWcg3wCMc6 - jfs
2个回答

14
你可以使用切片符号。 long_str[x:y] 将会给你一个范围在[x,y)内的字符(其中x被包含,而y则不被包含)。
>>> for i in range(0, len(long_str) - 1, 2):
...   print long_str[i:i+2]
... 
ab
cd

我在这里使用三个参数的 range 运算符来表示开始、结束和步长(请参见http://docs.python.org/library/functions.html)。

请注意,对于奇数长度的字符串,这不会取最后一个字符。如果你只想要最后一个字符,请将 range 的第二个参数改为 len(long_str)


7
for i, j in zip(long_str[::2], long_str[1::2]):
  print (i+j)

或者

import operator
for s in map(operator.add, long_str[::2], long_str[1::2]):
   print (s)

itertools 还提供了一个通用实现:

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接