Извлечь все символы между _ и .csv

#python #regex

#python #регулярное выражение

Вопрос:

Я пытаюсь извлечь дату из серии файлов вида:

costs_per_day_100516.csv

Я дошел до того, что извлек 6 , но я не понимаю, почему я не могу извлечь больше. Что не так со следующим:

 test_string = 'search_adwords_cost_by_state_100516.csv'
m = re.search("_([^_])*.csv", test_string)
m.group(1)
  

Это дает 6 скорее, чем 100516 . Что я делаю не так?

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

1. Разве вы не можете просто извлечь число?

2. Поместите * внутри скобок: _([^_]*).csv

3. s.rsplit(".",1)[0].rsplit("_", 1)[1]

4. почему вы просто не сделали re.search("(d*).csv", test_string).group(1) ? Это также извлекает число

Ответ №1:

 m = re.search("_([^_]*).csv", test_string)
  

Квалификатор повторения должен быть внутри захвата

Ответ №2:

 Data_Frame_Name.join(filter(lambda x: x.isdigit(), Data_Frame_Name['Column_Name']))
  

Это извлечет только цифры. Это может быть неприменимо для вашего случая, но будет хорошо работать для извлечения цифр из нескольких строк в столбце.