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.

War es hilfreich?

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))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top