使用Windows文件夹路径的Python正则表达式中的原始字符串

时间:2012-03-15 06:30:22

标签: python regex string

尝试使用此正则表达式在原始字符串中使用反斜杠:

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。有没有办法让这项工作不转换为正斜杠?

2 个答案:

答案 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')