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 wollen

Jede Hilfe sehr geschätzt.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top