#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']))
Это извлечет только цифры. Это может быть неприменимо для вашего случая, но будет хорошо работать для извлечения цифр из нескольких строк в столбце.