Как разбить строку на непечатаемом символе ascii в Python - PullRequest
1 голос
/ 29 мая 2010

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

Ответы [ 3 ]

3 голосов
/ 29 мая 2010

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

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

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

См. Также: извлечение непечатных символов из строки в питоне


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

>>> # \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']
2 голосов
/ 30 мая 2010
_, _, 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' символа.

1 голос
/ 30 мая 2010

Просто используйте метод разделения строки / юникода (на самом деле их не волнует строка, на которую вы разбиваетесь (кроме констант. Если вы хотите использовать регулярное выражение, используйте 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))
...