在python字符串格式化pycharm中自动添加反斜杠

时间:2017-06-23 08:28:45

标签: pycharm string-formatting python-3.5

格式化字符串时我有一种奇怪的行为:

"""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环境。

修改/ Picture

1 个答案:

答案 0 :(得分:0)

当你说“正在运行”时,我不清楚你在哪里看到意外输出,因为你没有提示如何将字符串传送到终端。你的意思是调试器以这种方式显示它吗?

总的来说,我总是通过调用对象的__repr__()方法看到PyCharm“做正确的事”,按照惯例,如果合理可能的话,返回一个可以被评估的字符串来实例化一个相同的宾语。因此,转义字符串在这个意义上是有效的。

Python的str类型很简洁,因为它更喜欢用单引号引用值,但如果值包含单引号,则会使用双引号。从记忆中,我不记得它是否曾经变得更加漂亮,如果两者都存在,请使用三重引号。

因此我怀疑你的“格式化字符串”可能不是简单的str(因为它只有单引号)。 type(FOO)返回哪里FOO是您为此分配的值?