Python, строки, символы Юникода

1

comp/INFO_MAP_ECE/101102.1.119

Эта строка является результатом работы процессора, но после номера всегда есть специальные/непечатаемые символы, и моя цель - получить номер, исключающий текст перед ним, и специальную/непечатаемую после него. Я пытаюсь использовать метод split, но не уверен, что использовать для специальных/непечатаемых символов. Может кто-нибудь предложить что-нибудь? Это было бы большой помощью. Благодарю.

  • 1
    Я предлагаю вам показать нам код, который вы используете для извлечения текста
  • 0
    Если мой ответ решил вашу проблему, вы должны принять его, нажав на галочку.
Показать ещё 1 комментарий
Теги:
string
unicode
character

2 ответа

3

Предполагая, что ваш вывод всегда выглядит примерно так, как вы показали, вы можете использовать регулярное выражение:

numPattern = r'/([\d.]+)'
output = 'comp/INFO_MAP_ECE/101102.1.119'

m = re.search(numPattern, output)

if m: #If a match was found
  numString = m.group(1)  #Extracts the first group surrounded by ()
  #etc

Образец здесь ищет /, затем некоторые числа и периоды, затем что угодно и извлекает только числа и периоды. Это должно работать до тех пор, пока вы всегда получаете строку, соответствующую этому описанию.

НТН!

  • 1
    Как я знаю . не должен быть экранирован в классе персонажа. Таким образом, вместо [\d\.]+' Шаблон должен быть [\d.]+' .
  • 1
    Кроме того, я не понимаю, что .* Делает в конце шаблона.
Показать ещё 1 комментарий
1

Является ли число всегда одной длины? Если это так, вы можете просто нарезать строку.

'comp/INFO_MAP_ECE/101102.1.119'[18:30]
  • 1
    Не хорошая идея. Даже если число сейчас одинаковой длины, это не всегда так. Также становится довольно обременительным в обслуживании. Это именно то, для чего были созданы регулярные выражения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню