从字符串中删除反斜杠

Joe*_*oka 10 python

我之前回答了一个问题,OP询问他如何从字符串中删除反斜杠.这是OP的字符串中反斜杠的样子:

"I don\'t know why I don\'t have the right answer"
Run Code Online (Sandbox Code Playgroud)

这是我的答案:

a = "I don\'t know why I don\'t have the right answer"
b = a.strip("/")
print b
Run Code Online (Sandbox Code Playgroud)

这从字符串中删除了反斜杠,但我的答案被低估了,我收到一条评论说" 我的答案有很多问题,很难计算 "我完全相信我的答案可能是错的,但我想要知道为什么我可以从中学习.但是,作者删除了这个问题,所以我无法回答那里的评论来提出这个问题.

aba*_*ert 21

a = "I don\'t know why I don\'t have the right answer"
b = a.strip("/")
print b
Run Code Online (Sandbox Code Playgroud)
  1. 斜杠(/)和反斜杠(\)不是同一个字符.字符串中没有任何斜杠,所以你正在做的事情没有任何效果.
  2. 即使你使用了反斜杠,a反正也没有反斜杠; \'在非原始字符串文字中只是一个'字符.
  3. strip只删除"前导和尾随字符".由于您尝试删除字符串中间的字符,因此无效.

也许还有一些元问题:

  1. OP的示例字符串实际上只有反斜杠,而不是反斜杠转义的撇号,即使他的问题标题说后者.所以你解决了一个不同的问题.OP可能比你的错更多,但它仍然不是一个好的答案.
  2. OP的代码已经完成了你想要做的事情.很明显,他有一些其他的,他无法解释的问题.(鉴于他不再回答评论并删除了他的问题,我的第一个赌注是它在某处是一个愚蠢的错字......)所以,即使你正确地编写了你的​​代码,它也没那么有用.

无论如何,这并不算太多.

然后,评论并没有说它数不胜数,只是难以计数.有些人难以统计到四点三.即使是英国国王也必须被他们的神职人员提醒如何去做.


luk*_*k32 12

好吧,字符串中没有斜杠,也没有反斜杠.反斜杠转义',虽然它们没有,因为字符串是用分隔符"".

print("I don\'t know why I don\'t have the right answer")
print("I don't know why I don't have the right answer")
Run Code Online (Sandbox Code Playgroud)

生产:

I don't know why I don't have the right answer
I don't know why I don't have the right answer
Run Code Online (Sandbox Code Playgroud)

此外,您使用了错误的字符,strip只删除字符串末尾的字符:

Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
>>> print("///I don't know why ///I don't have the right answer///".strip("/"))
I don't know why ///I don't have the right answer
Run Code Online (Sandbox Code Playgroud)

要将反斜杠放入字符串中,您也需要将其转义(或使用原始字符串文字).

>>> print("\\I don't know why ///I don't have the right answer\\".strip("/"))
\I don't know why ///I don't have the right answer\
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,即使反斜杠位于字符串的开头和结尾处,它们也不会被删除.

最后,回答原来的问题.一种方法是replace在字符串上使用方法:

>>> print("\\I don't know why \\\I don't have the right answer\\".replace("\\",""))
I don't know why I don't have the right answer
Run Code Online (Sandbox Code Playgroud)

另外,在你搞砸了自己的那个之后伸出一个好答案的道具=).


Bha*_*Rao 5

让我描述一下错误的全部内容

a = "I don\'t know why I don\'t have the right answer"
          ^                 ^
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到两个反斜杠实际上是逃避了'具有保存意义的字符文字.

现在来看你的代码,到底是做str.strip什么的?来自文档:

返回删除前导和尾随字符的字符串副本

因此,当您编写一段代码时,您不会删除反斜杠,而是删除字符串末尾的正斜杠(如果有的话)!

b = a.strip("/")
Run Code Online (Sandbox Code Playgroud)

但是,在显示时,您没有得到反斜杠.这是因为反斜杠仅用于内部python表示,当你打印它们时,它们将被解释为它们的转义字符,因此你不会看到反斜杠.您可以看到repr输出以获得更好的视图.

但需要注意的是,您不必使用反斜杠,因为您"用来表示字符串.所以

a = "I don't know why I don't have the right answer"
Run Code Online (Sandbox Code Playgroud)

足够了!

官方python 文档中涵盖了这个主题

>>> 'spam eggs'  # single quotes
'spam eggs'
>>> 'doesn\'t'  # use \' to escape the single quote...
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't"
Run Code Online (Sandbox Code Playgroud)

以上代码段直接取自文档.