2017-02-17 20 views
0

我有一個簡單的字符串如下:爲什麼strip會給出給定字符串的意外結果?

str = "id : c40d675f-19a9-4d40-9c6f-223eddafc81d" 

預期輸出:

c40d675f-19a9-4d40-9c6f-223eddafc81 d

我想什麼?

print(str.strip('id : ')) 

我能得到什麼:

c40d675f-19a9-4d40-9c6f-223eddafc81

我無法理解,爲什麼是最後一個字符 'd' 從字符串的結尾被剝去了?當我嘗試用其他字母替換字符'd'時,它工作正常。

回答

1

也許你想做到這一點:

str.split(":")[1].strip() 

strip刪除從一開始就和字符串的結束它的兩個參數所提供的字符任何可能的組合。這裏的參數是'id : ',它從開頭剝離'id : ',從字符串的末尾剝離'd'(字符串'id : '的其中一個可能組合)。

+0

謝謝。有用。 – Oogway

+0

在這種情況下,這是非常低效的。如果我們假設結構保持不變,「str [5:]」更合適。 – zwer

+0

然後你有什麼建議?你的答案不包括解決方案。如果你看得很對,我提到「也許你想這樣做」,而不是「我會這樣做」。 @zwer – Jarvis

3

因爲strip()需要從字符串的兩側刪除一組字符。如果您已經寫下:str.strip("i18d"),它會從開頭刪除81d,並從開頭刪除id

+0

謝謝。是的,我把'id'作爲一個參數去掉,其中有'd'字符。我應該得到它! – Oogway

0

條([字符]):

的字符參數不是前綴或後綴;相反,其數值的所有組合都被剝離

請注意,它將刪除您提供的所有字符組合!

>>> str.lstrip("id :") 
'c40d675f-19a9-4d40-9c6f-223eddafc81d' 

lstrip()返回字符串的一個副本中的所有字符都被從字符串的開頭

或者剝離,您可以使用str.replace("id : ", "", 1),指定替換的「首屆發生id:「爲空字符串

0

strip()將字符串的前導字符或尾隨字符從序列中的每個字符中剝離。

>>> 'abcadb'.strip('ab') 
'cad' 

>>> 'www.example.com'.strip('cmowz.') 
'example' 
相關問題