Pregunta

¿Cómo puedo dividir una línea en Python en un carácter ASCII no impreso (como el Long menos signo Hex 0x97, Octal 227)? No necesitaré el personaje en sí. La información después de ella se guardará como una variable.

¿Fue útil?

Solución

Puedes usar re.split.

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

Ajuste el patrón para incluir solo los caracteres que desea mantener.

Ver también: Desmeniguando no impresionables-Caracteres de una cuerda en Python


Ejemplo (con el largo menos):

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

O lo mismo 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']

Otros consejos

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

o

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

Si your_input_string no contiene un '\x97', después your_result estará vacío. Si your_input_string contiene múltiple '\x97' caracteres, your_result contendrá todo después del primero '\x97' personaje, incluido otro '\x97' caracteres.

Simplemente use el método String/Unicode Split (realmente no les importa la cadena en la que se divide (aparte de que es una constante. Si desea usar una regex, use re.split)

Para obtener la cadena dividida, ya sea escapar como las otras personas han demostrado " x97"

o

Use chr (0x97) para cadenas (0-255) o unichr (0x97) para unicode

Entonces un ejemplo sería

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

'will be split here:\x97 and this is the second string'.split(chr(0x97))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top