Подтвердить что ты не робот

Используйте строку формата Python в обратном порядке для синтаксического анализа

Я использовал следующий код python для форматирования идентификатора целочисленной части как форматированной строки номера детали:

pn = 'PN-{:0>9}'.format(id)

Я хотел бы знать, есть ли способ использовать ту же самую строку формата ('PN-{:0>9}') в обратном порядке, чтобы извлечь идентификатор целого из форматированного номера детали. Если это невозможно сделать, существует ли способ использовать одну форматированную строку (или регулярное выражение?) Для создания и анализа?

4b9b3361

Ответ 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'

Ответ 3

Как насчет:

id = int(pn.split('-')[1])

Это разделяет номер детали в тире, берет второй компонент и преобразует его в целое число.

P.S. Я сохранил id в качестве имени переменной, чтобы соединение с вашим вопросом было ясным. Рекомендуется переименовать эту переменную, чтобы она не скрывала встроенную функцию.