替换字符串中的特殊字符时出现问题

时间:2011-03-10 16:06:16

标签: python string

我正在尝试将一些文本提供给特殊的pupose解析器。这个解析器的问题在于它对()[]个字符很敏感,在文本的句子中有很多这些字符。解析器手册建议将所有()[]替换为\( \) \[ \]。所以使用str.replace我用来将\附加到所有这些charcaters。我使用下面的代码:

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

然而我把它作为我的输出:

'abcdef\\(1234)'

我的代码出了什么问题?谁能为我提供解决这些角色的解决方案?

3 个答案:

答案 0 :(得分:4)

您的代码没有任何问题。这是Python通过向您显示反斜杠已转义为\来告诉您该字符串包含文字\\的方法。

通过这种方式,您可以判断自己是否有两个字符,\后跟(,或只有一个字符,转义括号\(

您可能希望在print 'abcdef\\(1234)'时看到您看到的内容。你想要的就是你已经拥有的东西。

答案 1 :(得分:3)

这就是如何在REPL中打印转义字符(如反斜杠)。字符串的实际值与您预期的一样。

>>> a = '\('
>>> a
'\\('
>>> print(a)
\(

答案 2 :(得分:1)

suggests that all the ()[] get replaced with \( \) \[ \]

据我所知,解析器本身会替换,所以如果你输入:

'abcdef(1234)'

输出将是:

'abcdef\(1234\)'

因此,您必须解析输出以获取原始文本:

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

等...