2017-02-26 51 views
1

我有一個字符串:反相符號

a = '3+7-9' 

我需要反轉'+''-''-''+'爲了得到

a = '3-7+9' 

什麼是正確的方法使用而不是乘以* -1

+0

與乘以'* -1'將**不行**。這是一個字符串。你不能乘以一個負數的字符串(它會產生空字符串)。 –

回答

5

您可以使用str.translate(..),構建與str.maketrans(..)地圖:

a = a.translate(str.maketrans("+-","-+")) 

str.maketrans("+-","-+")將構造一個詞典:

>>> str.maketrans("+-","-+") 
{43: 45, 45: 43} 

所以它的字符映射代碼爲43(這是'+')上的字符45(這是'-'),反之亦然。

可以因此通過省略str.maketrans(..)部分提高性能一點,並寫上:

a = a.translate({43: 45, 45: 43}) 

這產生:

>>> a = '3+7-9' 
>>> a.translate({43: 45, 45: 43}) 
'3-7+9' 

如果你知道linux的tr命令,你會發現:

a.translate(str.maketrans("x","y"))

相當於:

tr xy

(在Linux殼)