Как я могу увеличить символ?
Я новичок в Python, пришел с Java и C. Как я могу увеличить символ? В Java или C символы и целые числа практически взаимозаменяемы, и в некоторых циклах для меня очень полезно иметь возможность увеличивать символы и индексировать массивы по символам.
Как я могу сделать это в Python? Достаточно плохо, когда нет традиционного для (;;) лупера - могу ли я достичь того, чего хочу, не переосмысливая всю свою стратегию?
Ответы
Ответ 1
В 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'
Ответ 2
"достаточно плохо, не имея традиционного для (;;) петлителя"?? Какие?
Вы пытаетесь сделать
import string
for c in string.lowercase:
...do something with c...
Или, может быть, вы используете string.uppercase
или string.letters
?
У Python нет for(;;)
, потому что часто есть лучшие способы сделать это. Он также не имеет математики символов, потому что это необязательно.
Ответ 3
Я пришел из 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
Ответ 4
def doubleChar(str):
result = ''
for char in str:
result += char * 2
return result
print(doubleChar("amar"))
выход:
aammaarr