Domanda

Come posso dividere una linea in Python a un carattere ASCII non stampato (come il lungo segno meno Hex 0x97, ottale 227)? Non avrò bisogno del personaggio stesso. Le informazioni dopo verranno salvate come variabile.

È stato utile?

Soluzione

Puoi usare re.split.

>>> import re
>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']

Regola il modello per includere solo i personaggi che si desidera conservare.

Guarda anche: Stripping-non-Printable-Characters-From-A-String-in-Python


Esempio (con il lungo meno):

>>> # \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']

Oppure, lo stesso con 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']

Altri suggerimenti

_, _, your_result= your_input_string.partition('\x97')

o

your_result= your_input_string.partition('\x97')[2]

Se your_input_string non contiene un file '\x97', poi your_result sarà vuoto. Se your_input_string contiene multiplo '\x97' personaggi, your_result conterrà tutto dopo il primo '\x97' carattere, incluso gli altri '\x97' personaggi.

Basta usare il metodo String/Unicode Split (a loro non importa davvero della stringa su cui si è divisi (oltre a quello che è una costante. Se si desidera utilizzare un regex, quindi usa re.slit)

Per ottenere la stringa split o sfuggire come le altre persone hanno mostrato " x97"

o

Utilizzare CHR (0x97) per stringhe (0-255) o UNICHR (0x97) per Unicode

Quindi un esempio sarebbe

'will not be split'.split(chr(0x97))

'will be split here:\x97 and this is the second string'.split(chr(0x97))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top