我正在尝试将一些文本提供给特殊的pupose解析器。这个解析器的问题在于它对()[]
个字符很敏感,在文本的句子中有很多这些字符。解析器手册建议将所有()[]
替换为\( \) \[ \]
。所以使用str.replace
我用来将\
附加到所有这些charcaters。我使用下面的代码:
a = 'abcdef(1234)'
a.replace('(','\(')
然而我把它作为我的输出:
'abcdef\\(1234)'
我的代码出了什么问题?谁能为我提供解决这些角色的解决方案?
答案 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('\)',')')......
等...