为什么python会放置" \\"在我的字符串之前单引号

时间:2017-07-11 20:00:22

标签: python string format

问题发生的代码:

require "minitest/autorun"
require_relative "close_but_no_func.rb"

class TestWinningNumbers < Minitest::Test
    def test_1_equals_1
        assert_equal(10-5, 3+2)
    end
    def test_winning_num
        my_num = "1134"
        arr=["6028","2088","3058","3476","8740","1134"]
        assert_equal(["1134"], match(my_num, arr))
    end     
end

我发送一个字符串,一个int和一个字符串。最后一个参数必须有单引号导致SQL SERVER语法,但python在每个单引号之前放置双反斜杠。 例如

    def updateEmpresaSetXEqualsToByCnpj(self, nomeColuna, valor, cnpj):
        query = (r"UPDATE empresa_cliente SET {0} = {1} WHERE cnpj_emp = '{2}';".format(nomeColuna, valor, cnpj))

正确的查询应该是

UPDATE empresa_cliente SET regime_tributacao_federal = 1 WHERE cnpj_emp = \\'33333222000111\\';

1 个答案:

答案 0 :(得分:2)

r"UPDATE empresa_cliente SET {0} = {1} WHERE cnpj_emp = '{2}';"

r""暂停转义序列。如果您正在以交互方式工作并使用r""在写入文件时不要担心双\\,那么它只会使用\检查print。{ / p>

第二个字符串:

'UPDATE empresa_cliente SET regime_tributacao_federal = 1 WHERE cnpj_emp = \\\'33333222000111\\\';'

这是你可能没注意到的:

>>> "\\\'wwww"
"\\'wwww"
>>> print("\\\'wwww")
\'wwww

如果你愿意的话,把它改成这个,它基本上可以在美学上更好:

"UPDATE empresa_cliente SET regime_tributacao_federal = 1 WHERE cnpj_emp = '33333222000111';"

你也可能在将字符串写入别处之前将字符串传递给另一种格式,然后检查它。