尝试使用此正则表达式在原始字符串中使用反斜杠:
import re
print re.sub(r'^[a-zA-Z]:\\.+(\\Data.+)', r'D:\folder\1', r'C:\Some\Path\Data\File.txt')
预期产出:
D:\folder\Data\File.txt
但正在解释\f
。有没有办法让这项工作不转换为正斜杠?
答案 0 :(得分:2)
re.sub解释替换字符串(docs)中的转义序列。在\ f之前添加额外的反斜杠以逃避反斜杠似乎可以解决问题:
import re
print re.sub(r'^[a-zA-Z]:\\.+(\\Data.+)', r'D:\\folder\1', r'C:\Some\Path\Data\File.txt')
如果您的替换字符串是动态的,您可以使用另一个正则表达式来转义反斜杠,或者使用str.encode('unicode-escape')。
答案 1 :(得分:2)
为避免特殊字符翻译,您可以使用lambda-function:
print re.sub(r'^[a-zA-Z]:\\.+(\\Data.+)', lambda x: r'D:\\folder\1', r'C:\Some\Path\Data\File.txt')