Как разделить линию в непечатной характеру ASCII в Python

StackOverflow https://stackoverflow.com/questions/2936174

Вопрос

Как я могу разделить линию в Python в непечатной характеру ASCII (например, длинный минус знак Hex 0x97, восьмеричный 227)? Мне не понадобится сам персонаж. Информация после ее сохранения будет сохранена как переменная.

Это было полезно?

Решение

Вы можете использовать re.split.

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

Отрегулируйте шаблон, чтобы включить только символы, которые вы хотите сохранить.

Смотрите также: Слование - непечатанные символы - от a-string-in-python


Пример (с длинным минусом):

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

Или то же самое с 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']

Другие советы

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

или

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

Если your_input_string не содержит '\x97', тогда your_result будет пустым. Если your_input_string содержит несколько '\x97' персонажи, your_result будет содержать все после первого '\x97' характер, в том числе другой '\x97' персонажи.

Просто используйте метод разделения String / Unicode (они на самом деле не заботятся о строке, на которой вы разделены (кроме того, что это постоянная. Если вы хотите использовать Regex, то используйте Re.Split)

Чтобы получить расщепленную строку либо избежать того, что другие люди показали « x97»

или

Используйте Chr (0x97) для строк (0-255) или Unichr (0x97) для Unicode

Так что пример будет

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

'will be split here:\x97 and this is the second string'.split(chr(0x97))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top