Почему re.sub заменяет всю строку? Как исправить?
Есть строка:
s = \
"""trash data
2020-06-23 09:55:48.672 log1
2020-06-23 09:59:28.617 log2
2020-06-23 09:59:28.617 log3
2020-06-23 10:00:51.234 log4
2020-06-23 10:00:51.234 log5"""
И есть регулярка:
pat = re.compile(r"^((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}).+)$", flags=re.MULTILINE)
Почему pat.sub(s, "_") возвращает
"_"
Вместо ожидаемого
"""trash data
_
_
_
_
_"""
? На regex101 работает так, как я ожидаю.
Полный код:
import re
pat = re.compile(r"^((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}).+)$", flags=re.MULTILINE)
s = \
"""trash data
2020-06-23 09:55:48.672 log1
2020-06-23 09:59:28.617 log2
2020-06-23 09:59:28.617 log3
2020-06-23 10:00:51.234 log4
2020-06-23 10:00:51.234 log5"""
print(pat.sub(s, "_"))
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
Перепутал порядок аргументов. pat.sub("_", s) вернул ожидаемый результат
"""trash data
_
_
_
_
_"""