跟着this question,我在想下面的函數是否足夠檢查沒有意外的順序反斜槓字符已經輸入到一個路徑中導致產生「特殊字符」。更清楚的是,\b
是一個退格,而\
後面跟着一個數字,起源於一些ascii字符代碼。我想避免這種情況。還有像\d
這樣的序列沒有特殊含義,顯然在這種情況下,\
會自動轉義。我並不擔心這一點。這裏是我的功能:在路徑字符串中正確轉義檢查反斜槓
def checkPathString(dir):
slash = False
for c in repr(dir):
if c == '\\':
slash = not slash
else:
if slash:
raise ValueError('Path contains unescaped \\ characters')
它似乎正確地檢測\b
或\
後跟數字(如內部表示成爲\x
東西)。這也使我發現\f
是一個特殊的序列,也被翻譯成\x
東西。
檢測爲壞的字符串:
"C:\dummy\bar" #Because of "\b"
"C:\dummy\2000" #Because of "\" followed by a number
檢測爲好字符串:
"C:\dummy\\bar" #\d is escaped automatically because is not a special sequence
"C:\dummy\\2000"
會更好,以檢查是否有串(32與127) –
僅ASCII字符什麼是你真正想檢查?代碼無法確定是否有意或故意存在特殊字符。如果你想檢查是否存在特殊字符(無論「特殊」的定義是什麼),只需要這樣做。 – Goyo
@Goyo我編輯了這個問題,試圖更好地指定我正在嘗試解決的問題。 – Antonio