-1

为什么我得到不同的字符串长度?尝试在在线 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

为什么?

ps 在这里尝试输入代码并在线运行:

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

ps2 如果上面和底部的文字完全准确,上面的结果总是比底部多 2 个!为什么?

4

2 回答 2

3

第一个字符串中len()%s两次。

第二个字符串len()89

89%s和短两个字符%s

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

print len(PUTjsonBODY %(XivelyID,XivelyCV))
于 2013-10-08T21:24:46.047 回答
0

看起来很明显:第一次,您没有更改 string 的值PUTjsonBODY。您将值替换到其中,但这会创建一个的字符串对象。 PUTjsonBODY保持不变。

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

于 2013-10-08T21:36:19.393 回答