[英]Raw string in Python regular expression using Windows folder path
嘗試使用此正則表達式在原始字符串中使用反斜杠:
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
正在被解釋。 有沒有辦法在不轉換為正斜杠的情況下完成這項工作?
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')。
要避免特殊字符轉換,可以使用lambda函數:
print re.sub(r'^[a-zA-Z]:\\.+(\\Data.+)', lambda x: r'D:\\folder\1', r'C:\Some\Path\Data\File.txt')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.