Python извлечение строки: извлечь часть между двумя предопределенными строками - PullRequest
1 голос
/ 13 апреля 2020

Допустим, у меня есть строка, подобная этой:

"ID: 123 Name: Michael , ID: 124 Name: John" 

Я хочу извлечь все идентификаторы как список, который является словом между "ID:" и "Name:"

Мой желаемый результат:

output = ['123', '124']

Как я могу сделать это наиболее эффективно? Большое спасибо =)

Ответы [ 2 ]

4 голосов
/ 13 апреля 2020

Вы можете использовать re.findall здесь. Вы можете извлечь Число между 'ID: number Name:.

s=" ID: 123 Name: Michael , ID: 124 Name: John "
re.findall(r'ID: (\d+) Name',s)
# ['123', '124']

Объяснение шаблона регулярного выражения r'ID: (\d+) Name' Вы можете прочитать о regex Syntax

  • \d+ используется для захвата чисел
  • () используется для захвата шаблона, заключенного между ними.
  • re.findall Возвращает список всех неперекрывающихся совпадений в строке , Если в шаблоне присутствует одна или несколько групп захвата, верните список групп; это будет список кортежей, если шаблон имеет более одной группы.

Я бы предложил использовать словарь вместо хранения деталей в строке.

details={'123':'Micheal','124':'John'}

Поскольку каждый ID будет уникальным, вы можете использовать его как ключ, а Name как значение, соответствующее ключу.

2 голосов
/ 13 апреля 2020

Попробуйте:

[ i for i in " ID: 123 Name: Michael , ID: 124 Name: John ".split() if i.isnumeric()]

дает вывод:

['123', '124']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...