2017-06-01 1 views
1

Ich habe den nächsten regulären Ausdruck Emojis auf einen Text zu finden:Python Regex: Bad Zeichenbereich

re.compile(u'([\U00002600-\U000027BF])|([\U0001F300-\U0001F64F])|([\U0001F680-\U0001F6FF])') 

Es funktioniert gut in Python 3, aber in Python 2.7 bekomme ich diese:

sre_constants.error: bad character range 

Wie kann ich es beheben, um Python 2.7 und Python 3 zu unterstützen?

Antwort

1

Verwenden r'(... statt u'(... wie folgt aus:

re.compile(r'([\U00002600-\U000027BF\U0001F300-\U0001F64F\U0001F680-\U0001F6FF])') 

Beachten Sie auch, dass Sie mehrere Bereiche innerhalb [...]

https://regex101.com/r/WuQ3Zr/1

+1

Es ist interessant, angeben. Ich habe versucht, Ihre Lösung im interaktiven Modus und es funktioniert, aber wenn ich das Programm ausführen oder wenn ich Pytest ausführen, schlägt es fehl. Was könnte der Grund sein? –

+0

Welche Version von Python ist fehlgeschlagen? –

+0

Der Interpreter ist Python 2.7.0 und der Code in einer Datei von Python funktioniert in Ordnung. Es ist nur in meinem System, wenn das cli ausgeführt wird oder pytest lokal ausgeführt wird. Dies ist der Code https://github.com/davidmogar/cucco/tree/executable und das ist der Build in Travis https://travis-ci.org/davidmogar/cucco/builds/238482411 Glaubst du, das ist nur ein Problem mit meinem System oder das könnte anderen passieren? Ich betreibe es auf einem Macbook. –

Verwandte Themen