#regex #python-3.x #pandas
#регулярное выражение #python-3.x #pandas
Вопрос:
Я новичок в регулярных выражениях. Я должен разделить строку фрейма данных на 3 столбца на основе шаблона с использованием регулярного выражения.
Пример строки в фрейме данных:
"Sample String(just a / string) 04/04/2014 to ongoing"
Я пытаюсь использовать регулярное выражение ниже, но не работает:
pat = re.compile("(?P<String_Name>[a-zA-Z- )(/ ]*)(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})(?P<stop_date>[a-zA-Z]*)?")
df=new_df.text.str.extract(pat)
Нужен вывод, подобный этому:
String_Name = Sample String(just a / string)
Start_Date = 04/04/2014
Stop_Date = ongoing
Ответ №1:
Вы можете использовать
r'(?P<String_Name>.*?)s*(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})stos (?P<stop_date>.*)'
Смотрите демонстрацию регулярных выражений. График регулярных выражений:
Тест Pandas:
df = pd.DataFrame({'text':['Sample String(just a / string) 04/04/2014 to ongoing']})
rx = r'(?P<String_Name>.*?)s*(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})stos (?P<stop_date>.*)'
df1 = df['text'].str.extract(rx)
Вывод:
>>> df1
String_Name START_DATE stop_date
0 Sample String(just a / string) 04/04/2014 ongoing