import re
base_path = "c:\\five"
print(base_path)
filename = "<data>\\a.txt"
filename = re.sub(r'(?i)<data>', base_path, filename)
print(filename)
输出:
c:\five
c:
ive\a.txt
通常应该是:c:\five\a.txt
.
同样的代码在Python 2中不会这样做。
将其更改为类似下面的内容会导致相同的结果。
reg = re.compile(re.escape('<data_path>'), re.IGNORECASE)
filename = reg.sub(base_path, filename)
1条答案
按热度按时间igsr9ssn1#
当
c:\\five
经过re.sub
时,它变成了c:\five
(包含一个\f
换页字符)。它在替换字符串中这样做有点奇怪,但你可以将反斜杠作为c:\\\\five
进行双转义。或者你可以将替换作为一个函数传递,这将避免这种正则表达式处理:输出:
c:\five\a.txt
详情请参见文档:
repl
可以是字符串或函数;如果它是一个字符串,则处理其中的任何反斜杠转义。也就是说,\n
被转换为单个换行符,\r
被转换为回车符,依此类推。