【问题标题】:lexical analysis python词法分析python
【发布时间】:2012-05-30 14:22:50
【问题描述】:

最近我做了以下观察:

>>> x= "\'"
>>> x
"'"
>>> y="'"
>>> y
"'"
>>> print x
'
>>> print y
'

谁能解释一下为什么会这样。我正在使用 python 2.7.x。我很了解转义序列。

我想做以下事情: 我有一个带单引号的字符串,我必须将它输入数据库,所以我需要用反斜杠替换单引号(')的实例,后跟单引号(\')。我怎样才能做到这一点。

【问题讨论】:

  • 您期待的是什么,为什么?
  • Python's Lexical Analysis chapter 可能会有所帮助。
  • 奥斯卡的回答解释了这里发生了什么。您可能会发现原始字符串也很有趣。 >>> z = r"\'">>> z"\\'"
  • 我已经编辑了这个问题并提供了更多细节。

标签: python string escaping quotes lexical-analysis


【解决方案1】:

在一对"" 中,您不需要转义' 字符。当然可以,但正如您所见,这是不必要的,也没有任何效果。

如果您要在一对'' 中写入' 或在一对"" 中写入",则必须转义:

x = '\''
y = "\""

编辑:

关于问题的最后一部分,在编辑后添加:

我有一个带有单引号的字符串,我必须将它输入到数据库中,所以我需要用反斜杠后跟单引号 (\') 替换单引号 (') 的实例。我怎样才能做到这一点

以下任何一种方法都可以,注意使用raw strings 以避免转义特殊字符:

v = "\\'"
w = '\\\''
x = r'\''
y = r"\'"

print v, w, x, y
> \' \' \' \'

【讨论】:

  • 我不想转义单引号我想在字符串中添加反斜杠。我也尝试用反斜杠替换,然后是反斜杠,然后是单引号(\\'),但它不起作用。
  • @AmanDeepGautam 它是如何失败的? print "\\'" 打印什么?
  • @AmanDeepGautam 我编辑了我的答案,现在它包含了在您的问题中编辑后指出的问题的解决方案。如果对您有用,请不要忘记接受此答案。
  • 感谢所有帮助。我想要实现的行为是不可能的,因为我要替换的字符串不是原始字符串。如果你创建一个你正在应用函数替换的字符串,那么它工作正常,
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多