Получение двух символов из строки в Python - PullRequest
5 голосов
/ 22 мая 2010

как получить в питоне из строки не один символ, а два?

У меня есть:

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

и это дает мне как

a
b
c
d

но мне нужно получить

ab
cd

Я новичок в Python .. Есть ли способ?

Ответы [ 3 ]

11 голосов
/ 22 мая 2010

Вы можете использовать обозначение среза. 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

Здесь я использую оператор диапазона с тремя аргументами для обозначения начала, конца и шага (см. http://docs.python.org/library/functions.html).

Обратите внимание, что для строки нечетной длины это не займет последний символ. Если вам нужен последний символ, измените второй аргумент range на len(long_str).

7 голосов
/ 22 мая 2010
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)
0 голосов
/ 14 января 2019

Я также новичок в Python, взгляните на мой код:

long_str = "abcdefghi"

state1=True
state2=False
state3=True

for item in long_str:
    if state1:
       print(item,end="")
       state3=True

    if state2:
       print(item)
       state1=True
       state2=False
       state3=False

    if state3:
       state1=False
       state2=True

Выход:

ab
cd
ef
gh
i
...