Как я могу разделить строку в Python на непечатаемый символ ascii (например, длинный шестнадцатеричный знак минус 0x97, восьмеричный 227)? Сам персонаж мне не понадобится. Информация после нее будет сохранена как переменная.
Как разделить строку на непечатаемый символ ascii в Python
Ответы (3)
Вы можете использовать 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']
Или то же самое с юникодом:
>>> # \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')
or
your_result= your_input_string.partition('\x97')[2]
Если your_input_string
не содержит '\x97'
, то your_result
будет пустым. Если your_input_string
содержит несколько символов '\x97'
, your_result
будет содержать все после первого символа '\x97'
, включая другие символы '\x97'
.
Просто используйте метод разделения строки/юникода (им на самом деле не нужна строка, на которую вы разделяете (кроме того, что это константа. Если вы хотите использовать регулярное выражение, используйте re.split)
Чтобы получить разделенную строку, либо экранируйте ее, как другие люди показали "\ x97"
или
используйте chr(0x97) для строк (0-255) или unichr(0x97) для юникода
так что пример будет
'will not be split'.split(chr(0x97))
'will be split here:\x97 and this is the second string'.split(chr(0x97))
chr(0x97)
) (2) использование [uni]chr(0x97) instead of [u]"\x97"
является запутанным/избыточным/расточительным /deprecable (ИМХО) -- вы бы написали float("1.23")
вместо 1.23
?? (3) Если бы он работал в юникоде, ему не нужно было бы unichr(0x97)
, ему нужно было бы u"\u2014"
, то есть "\x97".decode("cp1252")
- person John Machin; 31.05.2010
print repr(your_data)
однозначно показывает, что у вас есть; попробуйте использовать его, когда будете задавать свой следующий вопрос.
- person John Machin; 01.06.2010