格式化字符串时我有一种奇怪的行为:
"""select username from users, price where pricing_id ='{r}' and price.REQUESTER=users.ID;""".format(r=pr)
这给了我:
'select username from users, price where pricing_id =\\'ID123\\' and price.REQUESTER=users.ID;'
注意每个引号前的不需要的转义。在Python Console中执行相同的操作会产生正确的结果,但在(或Evaluate)Pycharm中运行会产生自动添加的反斜杠。有人遇到过类似的东西吗?这是py3.5环境。
答案 0 :(得分:0)
当你说“正在运行”时,我不清楚你在哪里看到意外输出,因为你没有提示如何将字符串传送到终端。你的意思是调试器以这种方式显示它吗?
总的来说,我总是通过调用对象的__repr__()
方法看到PyCharm“做正确的事”,按照惯例,如果合理可能的话,返回一个可以被评估的字符串来实例化一个相同的宾语。因此,转义字符串在这个意义上是有效的。
Python的str
类型很简洁,因为它更喜欢用单引号引用值,但如果值包含单引号,则会使用双引号。从记忆中,我不记得它是否曾经变得更加漂亮,如果两者都存在,请使用三重引号。
因此我怀疑你的“格式化字符串”可能不是简单的str
(因为它只有单引号)。 type(FOO)
返回哪里FOO
是您为此分配的值?