下面是用下面的代码打印出来的字符串-
jsonString = data.decode("utf-8")
print jsonString
下面是控制台上打印出来的字符串-
{"description":"Script to check testtbeat of TEST 1 server.", "script":"#!/bin/bash\nset -e\n\nCOUNT=60 #number of 10 second timeouts in 10 minutes\nSUM_SYNCS=0\nSUM_SYNCS_BEHIND=0\nHOSTNAME=$hostname \n\nwhile [[ $COUNT -ge \"0\" ]]; do\n\necho $HOSTNAME\n\n#send the request, put response in variable\nDATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/heartbeat)\n\n#grep $DATA for syncs and syncs_behind\nSYNCS=$(echo $DATA | grep -oE 'num_syncs: [0-9]+' | awk '{print $2}')\nSYNCS_BEHIND=$(echo $DATA | grep -oE 'num_syncs_behind: [0-9]+' | awk '{print $2}')\n\necho $SYNCS\necho $SYNCS_BEHIND\n\n#verify conditionals\nif [[ $SYNCS -gt \"8\" && $SYNCS_BEHIND -eq \"0\" ]]; then exit 0; fi\n\n#decrement the counter\nlet COUNT-=1\n\n#wait another 10 seconds\nsleep 10\n\ndone\n"}
但是当我使用python json.loads
加载它时,如下所示-
jStr = json.loads(jsonString)
我得到这个错误-
ERROR Invalid control character at: line 1 column 202 (char 202)
我看了char 202,但我不知道为什么会有问题?我的记事本中的char 202是e
我猜。。或者是我计算错了
知道怎么了吗?我如何找出是哪一个引起了问题。
更新:-
jsonString = {"description":"Script to check testtbeat of TIER 1 server.", "script":"#!/bin/bash\nset -e\n\nCOUNT=60 #number of 10 second timeouts in 10 minutes\nSUM_SYNCS=0\nSUM_SYNCS_BEHIND=0\nHOSTNAME=$hostname \n\nwhile [[ $COUNT -ge \"0\" ]]; do\n\necho $HOSTNAME\n\n#send the request, put response in variable\nDATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/heartbeat)\n\n#grep $DATA for syncs and syncs_behind\nSYNCS=$(echo $DATA | grep -oE 'num_syncs: [0-9]+' | awk '{print $2}')\nSYNCS_BEHIND=$(echo $DATA | grep -oE 'num_syncs_behind: [0-9]+' | awk '{print $2}')\n\necho $SYNCS\necho $SYNCS_BEHIND\n\n#verify conditionals\nif [[ $SYNCS -gt \"8\" && $SYNCS_BEHIND -eq \"0\" ]]; then exit 0; fi\n\n#decrement the counter\nlet COUNT-=1\n\n#wait another 10 seconds\nsleep 10\n\ndone\n"}
print jsonString[202]
下面是我得到的错误-
KeyError: 202
There is no error in your json text.
如果将字符串作为字符串文字复制粘贴到Python源代码中,则可能会出现错误。在这种情况下,
\n
被解释为单个字符(换行符)。您可以通过使用原始字符串文本来修复它(r''
,使用三引号r'''..'''
以避免在字符串文本中转义"'
引号)。字符串中允许使用控制字符,如下所示
你可以在docs for python 2,或者the docs for python 3中找到这个
Escape your newlines.
对我有用。
另外,如果以后遇到这样的错误,可以使用一种调试技术,将字符串缩短为可以工作的字符串,然后缓慢地添加数据,直到它不工作为止
相关问题 更多 >
编程相关推荐