Wie man Linie beim nicht druckenden ASCII-Charakter in Python spaltet
-
05-10-2019 - |
Frage
Wie kann ich eine Linie in Python in einem nicht druckenden ASCII-Charakter (wie dem langen Minuszeichen Hex 0x97, Oktal 227) teilen? Ich werde den Charakter nicht selbst brauchen. Die Informationen, nachdem diese als Variable gespeichert sind.
Lösung
Sie können verwenden re.split
.
>>> import re
>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
Passen Sie das Muster an, um nur die Zeichen hinzuzufügen, die Sie aufbewahren möchten.
Siehe auch: Stripping-Non-Printable-Characters-From-a-String-in-Python
Beispiel (mit dem langen Minus):
>>> # \xe2\x80\x93 represents a long dash (or long minus)
>>> s = 'hello – world'
>>> s
'hello \xe2\x80\x93 world'
>>> import re
>>> re.split("\xe2\x80\x93", s)
['hello ', ' world']
Oder das gleiche mit Unicode:
>>> # \u2013 represents a long dash, long minus or so called en-dash
>>> s = u'hello – world'
>>> s
u'hello \u2013 world'
>>> import re
>>> re.split(u"\u2013", s)
[u'hello ', u' world']
Andere Tipps
_, _, your_result= your_input_string.partition('\x97')
oder
your_result= your_input_string.partition('\x97')[2]
Wenn your_input_string
enthält kein a '\x97'
, dann your_result
wird leer sein. Wenn your_input_string
enthält mehrere '\x97'
Figuren, your_result
wird alles nach dem ersten enthalten '\x97'
Charakter, einschließlich anderer '\x97'
Figuren.
Verwenden Sie einfach die String/Unicode -Split -Methode (sie kümmern sich nicht wirklich um die Zeichenfolge, die Sie aufgeteilt haben (abgesehen davon, dass sie eine Konstante ist. Wenn Sie einen Regex verwenden möchten, verwenden Sie RE.Plit).
Um die geteilte Zeichenfolge entweder zu entkommen, wie die anderen Leute " x97" gezeigt haben
oder
Verwenden Sie CHR (0x97) für Zeichenfolgen (0-255) oder Unichr (0x97) für Unicode
Ein Beispiel wäre also
'will not be split'.split(chr(0x97))
'will be split here:\x97 and this is the second string'.split(chr(0x97))