Ich habe zwei String.printable Rätsel in einer Frage.
Erstens, in Python 2.6:
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
Am Ende der Zeichenkette finden Sie ' \x0b\x0c ' sticht wie ein wunder Daumen hervor. Warum sind sie da? Ich verwende einen Rechner, der auf australische Einstellungen eingestellt ist, so dass es keine akzentuierten Zeichen oder Ähnliches geben sollte.
Versuchen Sie dann, diesen Code auszuführen:
for x in string.printable: print x,
print
for x in string.printable: print x
Die erste Zeile druckt erfolgreich alle Zeichen, die durch ein Leerzeichen getrennt sind. Die beiden ungeraden Zeichen stellen sich als die Symbole Männlich und Weiblich heraus.
Die zweite Zeile druckt erfolgreich alle Zeichen außer dem letzten, getrennt durch einen Zeilenvorschub. Das männliche Symbol wird gedruckt; das weibliche Symbol wird durch ein fehlendes Zeichen (ein Kästchen) ersetzt.
Ich bin mir sicher, dass Python nicht geschlechtsspezifisch sein sollte, also was soll der Unterschied?
1 Stimmen
Dies verdient keine gesonderte Antwort, aber die meisten Leute, die nach druckbaren Zeichen suchen, werden feststellen, dass
string.digits + string.letters + string.punctuation + ' '
ergibt das gewünschte Ergebnis, nämlich "druckbare Zeichen ohne Leerzeichen plus das Leerzeichen".0 Stimmen
string.digits + string.ascii_letters + string.punctuation
tatsächlich.