Matching nur ein Unicode-Brief in Python re

Ich habe einen String, aus dem ich 3 Gruppen extrahieren möchte:

'19 janvier 2012' -> '19', 'janvier', '2012' 

Monatsname konnte nicht ASCII-Zeichen enthalten, also [A-Za-z] funktioniert nicht für mich:

 >>> import re >>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 janvier 2012', re.UNICODE).groups() (u'20', u'janvier', u'2012') >>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 février 2012', re.UNICODE).groups() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'groups' >>> 

Ich könnte \w aber es entspricht Ziffern und Unterstrich:

 >>> re.search(ur'(\w+)', u'février', re.UNICODE).groups() (u'f\xe9vrier',) >>> re.search(ur'(\w+)', u'fé_q23vrier', re.UNICODE).groups() (u'f\xe9_q23vrier',) >>> 

Ich habe versucht, [: alpha:] zu benutzen, aber es funktioniert nicht:

 >>> re.search(ur'[:alpha:]+', u'février', re.UNICODE).groups() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'groups' >>> 

Wenn ich irgendwie ohne [_0-9] , aber ich weiß nicht wie. Und selbst wenn ich herausfinde, wie das zu tun ist, gibt es eine fertige Verknüpfung wie [:alpha:] was in Python funktioniert?

One Solution collect form web for “Matching nur ein Unicode-Brief in Python re”

Sie können eine neue Zeichenklasse konstruieren:

 [^\W\d_] 

Anstelle von \w . Übersetzt ins Englische bedeutet es "Jedes Zeichen, das kein nicht-alphanumerisches Zeichen ist ( [^\W] ist das gleiche wie \w ), aber das ist auch keine Ziffer und kein Unterstrich".

Daher wird es nur Unicode-Buchstaben zulassen (wenn du die re.UNICODE Kompilieroption benutzt).

  • Streifen () und Streifen (String.whitespace) geben unterschiedliche Ergebnisse trotz Dokumentation, was darauf hindeutet, dass sie gleich sein sollten
  • Python: Entfernen eines bestimmten Zeichens (u "\ u2610") aus String
  • Kastenzeichnung in python
  • Konvertieren von Unicode-Codepunkten in Unicode-Zeichen mit Python 3.3.1
  • Was auf der Erde ist die Unicode-Nummer?
  • Regex und Unicode
  • Python UnicodeEncodeError> Wie kann ich einfach beunruhigende Unicode-Zeichen entfernen?
  • (Unicode-Fehler) 'unicodeescape' Codec kann Bytes nicht in Position 2-3 decodieren: abgeschnitten \ UXXXXXXXX Escape
  • Python isdigit () function return true für nicht-stelliges Zeichen u '\ u2466'
  • Enthought - matplotlib (Probleme mit plot () Funktion)
  • Charakter \ u260e
  • Python ist die beste Programmiersprache der Welt.