Помощь с модулем re

#python

#python

Вопрос:

Мне нужно извлечь все эти строки между шаблонами nr: или /nr: . Кто-нибудь может мне помочь?

Строка

 nr:Organization/nr:Customer/nr:Agreement/nr:date/nr:coverage/nr:Premium/nr:Option/nr:OptionID
  

Результат, который я ожидаю, это

 Organization, Customer, Agreement,...OptionID
  

Комментарии:

1. Что вы пробовали? можете ли вы показать свой код и объяснить, с какими трудностями вы сталкиваетесь?

Ответ №1:

Если вы хотите сделать это без использования модуля «re», похоже, это сработает:

 test_string = 'nr:Organization/nr:Customer/nr:Agreement/nr:date/nr:coverage/nr:Premium/nr:Option/nr:OptionID'
columns = [f[3:] for f in test_string.split('/')]
print(columns)
  

Ответ №2:

Используйте re модуль, split строку и отфильтровывайте совпадения, длина которых равна 0:

 import re

test_string = "nr:Organization/nr:Customer/nr:Agreement/nr:date/nr:coverage/nr:Premium/nr:Option/nr:OptionID"

columns = [x for x in re.split("/{0,1}nr:",test_string) if len(x) > 0]

print(columns)

['Organization', 'Customer', 'Agreement', 'date', 'coverage', 'Premium', 'Option', 'OptionID']
  

Я надеюсь, что это поможет.

Ответ №3:

Вот способ с регулярным выражением и разделением:

 import re

string = 'nr:Organization/nr:Customer/nr:Agreement/nr:date/nr:coverage/nr:Premium/nr:Option/nr:OptionID'

x = filter(None, re.split('/*nr:', string))
print x
  

Регулярное выражение ищет nr: предшествующий (или нет) символ ‘/’. Поскольку re.split функция оставит некоторые пустые элементы, применение a filter к ней даст вам желаемый результат.

Также смотрите это в действии здесь: https://eval.in/656744