Question

Comment puis-je diviser une ligne en Python à caractère ascii non-impression (comme le signe moins longue hex 0x97, Octal 227)? Je ne vais pas besoin du personnage lui-même. Les informations après sera enregistrée en tant que variable.

Était-ce utile?

La solution

Vous pouvez utiliser re.split .

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

Ajuster le motif à inclure uniquement les caractères que vous souhaitez conserver.

Voir aussi: décapage-non-imprimables PERSONNAGE- de-a-chaîne en python


Exemple (p / long moins):

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

Ou, même avec 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']

Autres conseils

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

ou

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

Si your_input_string ne contient pas de '\x97', alors your_result sera vide. Si your_input_string contient plusieurs caractères '\x97', your_result contiendra tout ce qui suit le premier caractère de '\x97', y compris d'autres caractères '\x97'.

Il suffit d'utiliser la chaîne / unicode méthode split (Ils ne se soucient pas vraiment de la chaîne que vous divisez sur (autre que c'est une constante. Si vous voulez utiliser une expression régulière puis utilisez re.split)

Pour obtenir la chaîne de division échapper soit comme les autres ont montré "\ X97"

ou

utilisation chr (0x97) pour les cordes (0-255) ou unichr (0x97) pour unicode

un exemple serait

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

'will be split here:\x97 and this is the second string'.split(chr(0x97))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top