Es sieht aus wie das, was Sie in Ihrer String-Konstante haben, ist nicht ein Byte-String codiert in cp1252
, was erforderlich ist, damit str.isalpha
in Ihrem Land korrekt funktioniert. Sie sagen nicht, in welcher Umgebung Sie das eingegeben haben. Ich kann von der Art und Weise sagen, dass locale
antwortet, dass Sie auf Windows sind; vielleicht erhalten Sie UTF-8
von einer IDE oder cp850
von einem Eingabeaufforderungsfenster.
Was Sie auf Ihrem Bildschirm sehen, ist oft sehr wenig Hilfe beim Debuggen. Was du siehst, ist NICHT, was du hast. Die integrierte Funktion repr
ist (oder möchte) Ihr Freund sein. Es wird eindeutig in ASCII zeigen, was Sie tatsächlich haben. [Python 3: repr
wird ascii
umbenannt und es gibt eine neue repr
die nicht das, was Sie wollen]
Versuchen eingeben s = "your string constant with 'accented' letters"
dann print repr(s)
und bearbeiten Sie Ihre Frage, die Ergebnisse zeigen (copy/paste, nicht erneut eingeben nicht). Sagen Sie auch, welche Python-Version Sie verwenden.
Ein anderer Möchtegernfreund ist `unicodedata.name '... siehe unten.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'Finnish')
'Finnish_Finland.1252'
>>> s = '\xe4\xf6\xe5'
>>> import unicodedata
>>> for c in s:
... u = c.decode('1252')
... print repr(c), repr(u), unicodedata.name(u, '<no name>')
...
'\xe4' u'\xe4' LATIN SMALL LETTER A WITH DIAERESIS
'\xf6' u'\xf6' LATIN SMALL LETTER O WITH DIAERESIS
'\xe5' u'\xe5' LATIN SMALL LETTER A WITH RING ABOVE
>>> s.isalpha()
True
Sie können die obigen Ergebnisse mit this chart vergleichen.
Nun natürlich :) Danke. – user250765
Für diejenigen, die es verpasst haben, notieren Sie das "u", das eine Unicode-Zeichenfolge deklariert. – marcog
marcog, aktualisiert;) –