簡體   English   中英

替換字符串中的特殊字符時出現問題

[英]Problem with Replacing special characters in a string

我試圖將一些文本提供給一個特殊的pupose解析器。 這個解析器的問題在於它對()[]字符很敏感,在文本的句子中有很多這些字符。 解析器的手冊建議將所有()[]替換為\\( \\) \\[ \\] 所以使用str.replace我用來附加\\到所有這些charcaters。 我使用下面的代碼:

a = 'abcdef(1234)'
a.replace('(','\(')

但是我得到這個作為我的輸出:

'abcdef\\(1234)'

我的代碼出了什么問題? 誰能為我提供解決這些角色的解決方案?

您的代碼沒有任何問題。 這是Python通過向您顯示反斜杠已轉義為\\\\來告訴您該字符串包含文字\\的方法。

這樣你可以判斷你是否有兩個字符,一個\\后跟(或者只是一個字符,一個轉義括號\\(

您可能希望看到print 'abcdef\\\\(1234)'時看到的內容。 你想要的就是你已經擁有的。

這就是如何在REPL中打印轉義字符(如反斜杠)。 字符串的實際值與您預期的一樣。

>>> a = '\('
>>> a
'\\('
>>> print(a)
\(
suggests that all the ()[] get replaced with \( \) \[ \]

據我所知,解析器本身進行替換,所以如果你輸入:

'abcdef(1234)'

輸出將是:

'abcdef\(1234\)'

因此,您必須解析輸出以獲取原始文本:

output.replace('\(','(').replace('\)',')')......

等等...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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