webentwicklung-frage-antwort-db.com.de

Python: Wie kann ich einen Char erhöhen?

Ich bin neu in Python und komme aus Java und C. Wie kann ich ein Zeichen erhöhen? In Java oder C sind Zeichen und Ints praktisch austauschbar, und in bestimmten Schleifen ist es für mich sehr nützlich, Zeichen zu erhöhen und Arrays nach Zeichen zu indizieren. 

Wie kann ich das in Python machen? Es ist schlimm genug, kein traditionelles (;;) Looper zu haben - gibt es einen Weg, was ich erreichen kann, ohne meine gesamte Strategie überdenken zu müssen?

Jede Hilfe geschätzt.

87
Tom R

Verwenden Sie in Python 2.x einfach die Funktionen ord und chr:

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

Python 3.x macht dies organisatorischer und interessanter, da zwischen Bytes und Unicode klar unterschieden wird. Standardmäßig handelt es sich bei einer "Zeichenfolge" um Unicode. Die oben genannten Funktionen funktionieren (ord empfängt Unicode-Zeichen und chr erzeugt sie).

Wenn Sie jedoch an Bytes interessiert sind (z. B. zur Verarbeitung eines binären Datenstroms), 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'
159
Eli Bendersky

"Schlimm genug, kein traditionelles für (;;) Looper zu haben" ?? Was? 

Versuchst du das zu tun? 

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

Oder verwenden Sie string.uppercase oder string.letters?

Python hat for(;;) nicht, da es oft bessere Möglichkeiten gibt, dies zu tun. Es hat auch keine Charaktereigenschaften, weil es auch nicht notwendig ist.

13
S.Lott
def doubleChar(str):
    result = ''
    for char in str:
        result += char * 2
    return result

print(doubleChar("amar"))

ausgabe: 

aammaarr
0
Amar Tanwar

Ich kam aus PHP, wo man char (A nach B, Z nach AA, AA nach AB usw.) mit dem Operator ++ erhöhen kann. Ich habe eine einfache Funktion erstellt, die das gleiche in Python macht. Sie können auch die Liste der Zeichen in das ändern, was Sie benötigen (Kleinbuchstaben, Großbuchstaben usw.).

# 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
xpuu