Используйте строку формата Python в обратном порядке для синтаксического анализа
Я использовал следующий код python для форматирования идентификатора целочисленной части как форматированной строки номера детали:
pn = 'PN-{:0>9}'.format(id)
Я хотел бы знать, есть ли способ использовать ту же самую строку формата ('PN-{:0>9}'
) в обратном порядке, чтобы извлечь идентификатор целого из форматированного номера детали. Если это невозможно сделать, существует ли способ использовать одну форматированную строку (или регулярное выражение?) Для создания и анализа?
Ответы
Ответ 1
Модуль parse module "является противоположностью format()".
Пример использования:
>>> import parse
>>> format_string = 'PN-{:0>9}'
>>> id = 123
>>> pn = format_string.format(id)
>>> pn
'PN-000000123'
>>> parsed = parse.parse(format_string, pn)
>>> parsed
<Result ('123',) {}>
>>> parsed[0]
'123'
Ответ 2
Вы можете найти simulating scanf interresting.
Ответ 3
Как насчет:
id = int(pn.split('-')[1])
Это разделяет номер детали в тире, берет второй компонент и преобразует его в целое число.
P.S. Я сохранил id
в качестве имени переменной, чтобы соединение с вашим вопросом было ясным. Рекомендуется переименовать эту переменную, чтобы она не скрывала встроенную функцию.