Python: Jak mogę zwiększyć znak?
Jestem nowy w Pythonie, pochodzącym z Javy i C. Jak mogę zwiększyć znak? W Javie lub C, znaki i ints są praktycznie wymienne, a w niektórych pętlach bardzo przydatne jest dla mnie wykonywanie znaków przyrostowych i indeksowanie tablic za pomocą znaków.
Jak mogę to zrobić w Pythonie? Wystarczy, że nie mam tradycyjnego loopera (;;) - czy jest jakiś sposób, aby osiągnąć to, co chcę osiągnąć, bez konieczności ponownego przemyślenia całej mojej strategii?
Każda pomoc mile widziana.
3 answers
W Pythonie 2.x, wystarczy użyć funkcji ord
i chr
:
>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>>
Python 3.x sprawia, że jest to bardziej zorganizowane i interesujące, ze względu na wyraźne rozróżnienie między bajtami i unicode. Domyślnie," string " jest unicode, więc powyższe działa (ord
odbiera znaki Unicode i chr
wytwarza je).
Ale jeśli interesują Cię bajty (np. do przetwarzania jakiegoś binarnego strumienia danych), rzeczy są jeszcze prostsze:
>>> bstr = b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-24 17:59:56
"wystarczająco źle nie mieć tradycyjnego dla (;;) looper"?? Co?
Czy próbujesz zrobić
import string
for c in string.lowercase:
...do something with c...
A może używasz string.uppercase
lub string.letters
?
Python nie ma for(;;)
, ponieważ często są lepsze sposoby, aby to zrobić. Nie ma również matematyki postaci, ponieważ nie jest to konieczne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-28 18:38:50
Pochodzę z PHP, gdzie można zwiększyć char (a do B, Z do AA, AA do AB itp.) za pomocą operatora++. Zrobiłem prostą funkcję, która robi to samo w Pythonie. Możesz również zmienić listę znaków na dowolne (małe, wielkie, itp.) jest twoją potrzebą.
# 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-07 15:01:09