2011-06-21 56 views
0

我有這樣的交互式會話:str.replace加回斜線

>>> str = '192.168.1.1' 
>>> str = str.replace('.','\.') 
>>> str 
'192\\.168\\.1\\.1' 

我要出去放是:的192\.168\.1\.1代替192\\.168\\.1\\.1

我怎樣才能做到這一點?它爲什麼這樣表現?

+0

重複http://stackoverflow.com/questions/2179493/adding-backslashes-without-escaping-python的 – Cez

回答

6

使用print str,而不是str

>> str = '192.168.1.1' 
>>> str = str.replace('.','\.') 
>>> str 
'192\\.168\\.1\\.1' 
>>> print str 
192\.168\.1\.1 

你的字符串,你希望它是,但一當你剛剛傾倒的對象,Python是它顯示你可以用它來分配的形式給你到另一個字符串 - 這意味着要逃避\字符。

3

字符串正是它應該是。額外的斜線只在顯示中顯示,而不是在實際的字符串中。

+0

的原因是,我想,那\。是不是一個有效的轉義序列? –

0

\是一個轉義字符,所以\要求通過隱藏其轉義字符性質來將\添加到字符串中。

如果你的字符串名稱前使用「打印」,你會看到它如何出現,而不是其實際包含的內容。