Как разделить линию в непечатной характеру ASCII в Python
-
05-10-2019 - |
Вопрос
Как я могу разделить линию в 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))