Come dividere la linea sul carattere ASCII non stampato in Python
-
05-10-2019 - |
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.
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))