#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