2010-09-12 80 views
0

我讀取ini文件以在python中打開文件。 事情是,文件信息有時在「..」中,但有時它不是。如何檢測文件路徑是否用Python封裝在「..」中?

例如,

fileA = "https://stackoverflow.com/a/b/c.txt" 
fileB = /a/b/d.txt 

有沒有簡單的方法來檢測一個字符串被包裹在「..」,並返回報價字符串裏面?

回答

3

簡單檢測將涉及檢查s[:1] == s[-1:] == '"'(仔細切片,而不是索引,以避免例外,如果s是一個空字符串措辭的話),以及有條件的去除每端只有一個報價,如果一個出現在兩端

if s[:1] == s[-1:] == '"': 
    s = s[1:-1] 

另外,在進場@馬格努斯的回答,因爲他說,刪除所有前導和尾隨報價,並無條件地這樣做;因此,例如,如果s以三個引號開頭,但不以任何結尾(並且在所有其他奇怪的情況下,除了所述的規格之外),我的答案中的片段不會更改s,@ Magnus的意志剝離三個主要報價。 「你付出你的錢,你選擇了......」如果你不在意這種或那種方式(即你確信兩個答案不同的情況是「完全不可能的」)。 ..),那麼我認爲@Magnus的抽象級別更高的方法更簡潔(但是,這是一個風格問題 - 當你不關心不匹配或不平衡的引號時,他的方法和我的解決方案都是正確的Python解決方案;-) 。

+0

s [0] == s [-1] =='''會不一樣,還是更好? – prosseek 2010-09-12 04:58:22

+0

@prosseek,如果有'len(s)== 0',會產生一個異常; if你神奇地確定不會發生,或者當's'是一個空字符串時_want_是一個異常,索引而不是切片可以更快。 – 2010-09-12 05:13:28

2

要刪除所有前導和尾隨報價:

fileA = fileA.strip('"') 
相關問題