Python: Wie kann erhöhe ich einen char?
Frage
Ich bin neu in Python, von Java und C kommt Wie kann erhöhe ich einen char? In Java oder C, Zeichen und ints sind praktisch austauschbar und in bestimmten Loops, es ist sehr nützlich, um mich in der Lage seinen Schritt Zeichen zu tun, und Index-Arrays von Zeichen.
Wie kann ich dies in Python tun? Es ist schlimm genug, um nicht ein traditionelles für (;;) Looper mit - ist es eine Möglichkeit kann ich erreichen, was ich ohne meine gesamte Strategie zu überdenken
erreichen wollenJede Hilfe sehr geschätzt.
Lösung
In Python 2.x, benutzen Sie einfach die ord
und chr
Funktionen:
>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>>
macht Python 3.x dies organisiert und interessant, durch die klare Unterscheidung zwischen Bytes und Unicode. Standardmäßig ist ein "string" Unicode, so dass die oben genannten Arbeiten (ord
Unicode empfängt Zeichen und chr
produziert sie).
Wenn Sie aber in Bytes interessiert sind (wie zum Beispiel für einige binären Datenstrom Verarbeitung), sind die Dinge noch einfacher:
>>> bstr = b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'
Andere Tipps
"schlecht genug ist, keine traditionelle für (;;) Looper" ?? Was?
Sind Sie versuchen zu tun,
import string
for c in string.lowercase:
...do something with c...
Oder vielleicht Sie verwenden string.uppercase
oder string.letters
?
Python muss nicht for(;;)
, weil es oft bessere Möglichkeiten, es zu tun. Es ist auch nicht Zeichen Mathe, weil es nicht notwendig ist, auch nicht.
Ich kam von PHP, wo Sie Zeichen (A bis B, Z zu AA, AA AB etc.) unter Verwendung ++ Operator erhöhen können. Ich habe eine einfache Funktion, die das gleiche in Python tut. Sie können auch die Liste der Zeichen ändern, was auch immer (Klein- und Großbuchstaben, etc.) Ihre Notwendigkeit ist.
# 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
def doubleChar(str):
result = ''
for char in str:
result += char * 2
return result
print(doubleChar("amar"))
Ausgabe:
aammaarr