簡體   English   中英

如何將字符串更改為格式化字符串?

[英]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

請注意printrepr的區別:

>>> "abc-ccd_2013".replace("-","\-").replace("_","\_")
'abc\\-ccd\\_2013'

相當於:

>>> print(repr("abc-ccd_2013".replace("-","\-").replace("_","\_")))
'abc\\-ccd\\_2013'

這有效。 打印原始字符串時,'\\'將替換為'\\\\',因此它不會將其解釋為用於例如結束字符'\\ n',制表符'\\ t'等的轉義字符。 嘗試命令print str2print 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM