【问题标题】:Python prints string with "+" sign in betweenPython打印带有“+”号的字符串
【发布时间】:2017-09-16 08:51:33
【问题描述】:

我通过将网站中的 POST 有效负载转换为 JSON 并提取 Python 中 cmets 字段中的值来提取网站中的 cmets。

JSON 看起来像这样:

{
    .
    .
    "comment": "The Quick Brown Fox Jumped Over The Lazy Dog"
    .
    .
}

当我使用print() 函数打印评论时,评论是这样打印的:The+Quick+Brown+Fox+Jumped+Over+The+Lazy+Dog

评论的类型似乎是“unicode”。我已经尝试了herehere 提到的所有方法,但这些都不能解决我的问题。

我正在使用 python 2.7。现在我正在打印它以进行调试,但我想稍后将它存储在数据库中。所以我需要一个永久的解决方案来将 unicode 转换为字符串。

编辑:我使用var = json.loads(payload_from_POST) 将 POST 有效负载转换为 JSON。然后我通过 var['comment'] 提取“comment”的值。

【问题讨论】:

  • 某处的某些 url 编码没有得到未编码
  • 一种解决方案是使用替换命令将“+”替换为“”。
  • 客户端如何从服务器获取POST数据? POST 数据从客户端发送到服务器。展示你如何设置payload_from_POST
  • @user1753919:没有
  • @SriHariVignesh Web hook 是服务器端代码。

标签: python string unicode


【解决方案1】:

这是将请求字符串解析为适当的字典表示的问题。为此,您可以使用parse_qs 函数。

在 Python 2 中,

from urlparse import parse_qs

var = parse_qs(payload_from_POST)
print var['comment'][0]

在 Python 3 中

from urllib.parse import parse_qs

var = parse_qs(payload_from_POST)
print(var['comment'][0])


重要提示:parse_qs 将返回一个 JSON,它将键映射到 列表,而不是字符串。因此,为了实际打印“The Quick Brown Fox Jumped Over The Lazy Dog”,您必须访问var['comment'][0],因为var['comment'] 只会返回一个包含一个元素的列表。

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2016-07-17
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    相关资源
    最近更新 更多