[英]How to change a string into a formatted string?
我想更改源字符串:
str1 = 'abc-ccd_2013'
進入以下目標字符串:
str2 = 'abc\-ccd\_2013'.
所有'-'
應替換為'\\-'
,所有'_'
應替換為'\\_'
。
以下方法無效:
>>> str1
'abc-ccd_2013'
>>> a1 = str1.replace("-","\\-")
>>> a1
'abc\\-ccd_2013'
>>> a1 = str1.replace("-","\-")
>>> a1
'abc\\-ccd_2013'
>>> a1 = str1.replace('-','\-')
>>> a1
'abc\\-ccd_2013'
>>> a1 = str1.replace(r'-',r'\-')
>>> a1
'abc\\-ccd_2013'
>>>
您的代碼確實有效,可以組合成一個表達式:
>>> print("abc-ccd_2013".replace("-","\-").replace("_","\_"))
abc\-ccd\_2013
請注意print
與repr
的區別:
>>> "abc-ccd_2013".replace("-","\-").replace("_","\_")
'abc\\-ccd\\_2013'
相當於:
>>> print(repr("abc-ccd_2013".replace("-","\-").replace("_","\_")))
'abc\\-ccd\\_2013'
這有效。 打印原始字符串時,'\\'將替換為'\\\\',因此它不會將其解釋為用於例如結束字符'\\ n',制表符'\\ t'等的轉義字符。 嘗試命令print str2
或print a1
,它會沒事的。
更新:甚至stackoverflow用'\\'替換'\\\\',所以我必須輸入'\\\\\\'(鍵入這個我必須使用5個斜杠):D
您還可以執行以下操作:
str1 = 'abc-ccd_2013'
repl = ('-', '\-'), ('_', '\_')
print reduce(lambda a1, a2: a1.replace(*a2), repl, str1)
您必須使用打印功能才能獲得所需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.