如何在 re.IGNORECASE 条件下替换字符串中的字符

how can you replace characters in a string under the condition re.IGNORECASE

sentence = 'this is a book.pdf'

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

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

如何替换条件下的字符

我将假设您正在对字符串执行此操作

sentence = sentence.lower()

更好的是 sentence.lower() 在你使用下一句的地方可以做到在没有更多上下文的情况下很难说的技巧。

如果您对多种文件执行此操作,那么您可以找到句点 (.) 的索引,删除其后的所有内容并在末尾添加文件扩展名

sentence = sentence - sentence[sentence.index(".")+1:]
sentence += "csv"

您似乎想要截断找到的任何文件扩展名并添加 .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)