为什么字符串长度不同?

时间:2013-10-08 21:21:31

标签: python json string put

为什么我会得到不同的字符串长度? 尝试输入在线python编译器这段代码:

XivelyID=2
XivelyCV=3

PUTjsonBODY='{  "version": "1.0.0", \r\n\
"datastreams" : [ { \r\n\
    "id"" : "%s", \r\n\
    "current_value"" : "%s" } ]\r\n\
}\r\n'

print PUTjsonBODY %(XivelyID,XivelyCV)
print len(PUTjsonBODY)
print

XivelyID=8
XivelyCV=9

PUTjsonBODY='{  "version": "1.0.0", \r\n\
"datastreams" : [ { \r\n\
       "id"" : "%s", \r\n\
        "current_value"" : "%s" } ]\r\n\
}\r\n'%(XivelyID,XivelyCV)

print PUTjsonBODY 
print len(PUTjsonBODY)

第一次打印len(PUTjsonBODY)是116

第二次打印len(PUTjsonBODY)是114

为什么?

P.S。 尝试输入代码并在线运行:

http://www.compileonline.com/execute_python_online.php

p.s.2 如果上面和下面的文字完全准确地上面的结果是总共2更多然后底部! 为什么呢?

2 个答案:

答案 0 :(得分:3)

第一个len()中的字符串中包含%s,两次。

第二个len()中的字符串包含89

89%s%s短两个字符。

如果您想进行准确比较,请将第一个len()更改为:

print len(PUTjsonBODY %(XivelyID,XivelyCV))

答案 1 :(得分:0)

看起来非常明显:第一次,您不会更改字符串PUTjsonBODY的值。您将值替换为其中,但会创建 new 字符串对象。 PUTjsonBODY保持不变。

第二次,您在之前将值替换为 分配给PUTjsonBODY。不同的弦,不同的长度。具体来说,第一个字符串中的%s的第一个实例是第二个字符串中的8,第一个字符串中的第二个%s实例是第二个字符串中的9 。你已经用2个字符替换了4个字符,因此它们的长度差异为4-2 = 2。