【问题标题】:Python Add Delimiter to VariablePython将分隔符添加到变量
【发布时间】:2017-03-04 20:49:53
【问题描述】:

所以我有一个从设备到我的烧瓶服务器的 HTTP POST,它发送以下消息:

dump= '{"on":"false"}'
r = requests.post('http://127.0.0.1:5000', data=dump,
                  headers={'Content-Type': 'application/json'})

然后我从 Flask 服务器尝试 PUT 到我网络上的另一台设备:

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def signal():
    if request.method == 'POST':
        content = request.get_json()
        print(content)
        r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", content)
        return jsonify(content)
    else:
        return 'Hello, world!'

if __name__ == '__main__':
    app.run(debug=True)

唯一的问题是在我发送第一个 HTTP 请求后撇号分隔符被删除。如何在变量周围添加分隔符?

【问题讨论】:

  • 你能告诉我们你content变量在你print之后的内容是什么吗?
  • {"on":"false"}
  • 试过这个吗?内容 = "'" + 内容 + "'"

标签: python json http


【解决方案1】:

使用这样的东西:

content = "'" + str(request.get_json()) "'"

或者你也可以试试str.format的方式:

content = "'{}'".format(str(request.get_json()))

希望对你有帮助。

编辑:

格式化前将request.get_json()返回的dict转换为str

【讨论】:

  • 我收到错误 TypeError: Can't convert 'dict' object to str implicitly 我应该尝试 eval 还是其他什么?
  • 您想将content 作为字典还是纯字符串发送?如果是纯字符串,那么您首先必须将其转换为字符串,我刚刚在答案中遗漏了该字符串,但现在已更正。
【解决方案2】:

不确定为什么需要发送带引号的字符串。

也许其中之一会有所帮助。

In [1]: d = {"on":"false"}

In [2]: repr(d)
Out[2]: "{'on': 'false'}"

In [3]: import json

In [4]: s = json.dumps(d)

In [5]: str(s)
Out[5]: '{"on": "false"}'

In [6]: repr(s)
Out[6]: '\'{"on": "false"}\''

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    相关资源
    最近更新 更多