Python: Как я могу увеличить char?

Я новичок в Python, исходя из Java и C. Как я могу увеличить char? В Java или C символы и ints практически взаимозаменяемы, и в некоторых циклах мне очень полезно иметь возможность наращивать символы и массивы индексов по символам.

Как я могу сделать это в Python? Это плохо, не имея традиционного для (;;) петлителя - есть ли способ достичь того, чего я хочу достичь, не переосмысливая всю мою стратегию?

Любая помощь была оценена.

85
задан 28 янв. '10 в 21:28
источник поделиться
4 ответов

В Python 2.x просто используйте функции ord и chr:

>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>> 

Python 3.x делает это более организованным и интересным из-за его четкого различия между байтами и unicode. По умолчанию "строка" является юникодом, поэтому выше работает (ord получает символы Unicode и chr).

Но если вас интересуют байты (например, для обработки некоторого двоичного потока данных), все упрощается:

>>> bstr = b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'
155
ответ дан 28 янв. '10 в 21:28
источник

"достаточно плохо, не имея традиционного для (;;) петлителя"?? Какие?

Вы пытаетесь сделать

import string
for c in string.lowercase:
    ...do something with c...

Или, может быть, вы используете string.uppercase или string.letters?

У Python нет for(;;), потому что часто есть лучшие способы сделать это. Он также не имеет математики символов, потому что это необязательно.

13
ответ дан 28 янв. '10 в 21:38
источник
def doubleChar(str):
    result = ''
    for char in str:
        result += char * 2
    return result

print(doubleChar("amar"))

выход:

aammaarr
0
ответ дан 17 янв. '19 в 6:59
источник

Я пришел из PHP, где вы можете увеличивать char (от A до B, от Z до AA, от AA до AB и т.д.), используя оператор ++. Я сделал простую функцию, которая делает то же самое в Python. Вы также можете изменить список символов на любые (строчные, прописные и т.д.), Которые вам нужны.

# Increment char (a -> b, az -> ba)
def inc_char(text, chlist = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
    # Unique and sort
    chlist = ''.join(sorted(set(str(chlist))))
    chlen = len(chlist)
    if not chlen:
        return ''
    text = str(text)
    # Replace all chars but chlist
    text = re.sub('[^' + chlist + ']', '', text)
    if not len(text):
        return chlist[0]
    # Increment
    inc = ''
    over = False
    for i in range(1, len(text)+1):
        lchar = text[-i]
        pos = chlist.find(lchar) + 1
        if pos < chlen:
            inc = chlist[pos] + inc
            over = False
            break
        else:
            inc = chlist[0] + inc
            over = True
    if over:
        inc += chlist[0]
    result = text[0:-len(inc)] + inc
    return result
0
ответ дан 07 мая '17 в 18:01
источник

Другие вопросы по меткам или Задайте вопрос