как можно заменить символы в строке при условии re.IGNORECASE

sentence = 'this is a book.pdf'

sentence.replace( 'pdf' or 'PDF' ,'csv' )

sentence.replace('pdf','csv',re.IGNORECASE)

как я могу заменить символы при условии

  • указано, например, в формате PDF или PDF
  • или игнорирование случаев все вместе

3 ответа

Решение

Похоже, вы хотите обрезать любое найденное расширение файла и добавить .csv. Я бы рекомендовал использовать\w{1,5} (символы от одного до пяти слов) вместо \w+ (один или несколько) из-за случая файлов с именем an12n512n5125.1125n125n125 которые у меня часто были в моих собственных файловых блобах.

Точка совпадения, за которой следует один или несколько буквенно-цифровых символов в конце строки ($) и замена на.csv. Чувствительность к регистру больше не имеет значения:

import re
sentence = 'this is a book.pdf'
ext2 = 'csv'
sentence = re.sub(rf'\.\w+$', f'.{ext2}', sentence)

нарежьте конец строки, сравните его в нижнем регистре с.pdf и замените.pdf на.csv. Использование строковой интерполяции (f"") для настраиваемых расширений

sentence = 'this is a book.pdf'
ext1 = 'pdf'
ext2 = 'csv'
sentence = sentence[:-4]+f'.{ext2}' if sentence[-4:].lower()==f'.{ext1}' else sentence

Использование регулярного выражения с $ для сопоставления конца строки с re.IGNORECASE. Использование строковой интерполяции для настраиваемых расширений

import re
sentence = 'this is a book.pdf'
ext1 = 'pdf'
ext2 = 'csv'
sentence = re.sub(rf'\.{ext1}$', f'.{ext2}', sentence, flags=re.IGNORECASE)

Я предполагаю, что вы делаете это со строкой

sentence = sentence.lower()

А еще лучше просто sentence.lower() Где вы используете предложение "следующее", может быть достаточно сложно сказать без дополнительного контекста.

Если вы делаете это для нескольких типов файлов, вы можете найти индекс периода (.), Удалить все после него и добавить расширение файла в конец

sentence = sentence - sentence[sentence.index(".")+1:]
sentence += "csv"
Другие вопросы по тегам