在进行urlencode转换请求的参数时,一直多出一个空格,导致请求参数不正确,多了一个空格,解决方法一种是将dict中key-value键值对的value直接定义为字符串,另一种是value仍然为字典,增加一部转为json字符,之后再进行编码,dict转为json字符串也要注意空格问题,默认转成的json字符串还是有多余的空格

 # -*- coding: utf-8 -*-
import json
from urllib import parse """
@version: v1.0
@author: monleylu
@time: 2018/2/24 10:35
"""
urlParam = {
"c": {
"cc": 3402,
"ct": 10,
"p": 14588,
"ov": 20,
"dt": 0,
"v": "9.32.1"
}
}
####
# 正常编码结果应该为:
# c=%7B%22cc%22%3A3402%2C%22ct%22%3A10%2C%22p%22%3A14588%2C%22ov%22%3A20%2C%22dt%22%3A0%2C%22v%22%3A%229.32.1%22%7D
# 可以看到多了个+ 加号
###
print("直接对字典进行编码后结果:\r\n" + parse.urlencode(urlParam)) b = {"cc":3402,"ct":10,"p":14588,"ov":20,"dt":0,"v":"9.32.1"}
# 可以看到默认格式参数化时,会多出一个空格
print("使用默认参数转换dict到json字符串:\r\n" + json.dumps(b)) print("非默认参数转换dict到json字符串:\r\n" + json.dumps(b, separators=(',', ':')))
a = {"c": json.dumps(b, separators=(',', ':'))}
print(parse.urlencode(a)) #一种解决方法
urlParam["c"]=json.dumps((urlParam["c"]),separators=(',', ':'))
print("进行编码后结果:\r\n" + parse.urlencode(urlParam)) #另一种解决方法,这种方法仍然要注意字符串中间的空格,不是太推荐这种方法
urlParam = { "c": '{"cc":3402,"ct":10,"p":14588,"ov":20,"dt":0,"v":"9.32.1"}'}
print("进行编码后结果2:\r\n" + parse.urlencode(urlParam)) 输出结果
直接对字典进行编码后结果:
c=%7B%27cc%27%3A+3402%2C+%27ct%27%3A+10%2C+%27p%27%3A+14588%2C+%27ov%27%3A+20%2C+%27dt%27%3A+0%2C+%27v%27%3A+%279.32.1%27%7D
使用默认参数转换dict到json字符串:
{"cc": 3402, "ct": 10, "p": 14588, "ov": 20, "dt": 0, "v": "9.32.1"}
非默认参数转换dict到json字符串:
{"cc":3402,"ct":10,"p":14588,"ov":20,"dt":0,"v":"9.32.1"}
c=%7B%22cc%22%3A3402%2C%22ct%22%3A10%2C%22p%22%3A14588%2C%22ov%22%3A20%2C%22dt%22%3A0%2C%22v%22%3A%229.32.1%22%7D
进行编码后结果:
c=%7B%22cc%22%3A3402%2C%22ct%22%3A10%2C%22p%22%3A14588%2C%22ov%22%3A20%2C%22dt%22%3A0%2C%22v%22%3A%229.32.1%22%7D
进行编码后结果2:
c=%7B%22cc%22%3A3402%2C%22ct%22%3A10%2C%22p%22%3A14588%2C%22ov%22%3A20%2C%22dt%22%3A0%2C%22v%22%3A%229.32.1%22%7D

python处理dict转json,字符串中存在空格问题,导致url编码时,存在多余字符的更多相关文章

  1. 在java代码中显示json字符串(怎么避免json字符串中双引号在java代码中显示)

    String log = "eyJvcmRlckluZm8iOnsiaWQiOjEwNzQwNCwib3JkZXJJZCI6MjczNjQyMSwicHJvZHVjdENvZGUiOjQ1N ...

  2. json字符串中key值下划线命名转换为驼峰命名

    json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...

  3. 将一个字符串中的空格替换成“%20”(C、Python)

    将一个字符串中的空格替换成“%20” C语言: /* ----------------------------------- 通过函数调用,传地址来操作字符串 1.先计算出替换后的字符串的长度 2.从 ...

  4. 获取Json字符串中的key和value

    获取Json字符串中的key和value 在web项目中经常会用到json数据(如:struts2处理请求返回json数据给jsp解析),因此,JSONObject对象是必备的,这时就需要引入相关的j ...

  5. 前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 "

    前台传递给后台的JSON字符串中的引号 "" 在JAVA后台被转义为 &quot 1.问题: 前台数据,JSON字符串带有引号 "" ,数据被传递到后台 ...

  6. PHP中json_encode后,在json字符串中依然显示中文的解决方案

    <?php header("Content-Type:text/html;charset=utf-8;"); $arr = array ('Version_code'=> ...

  7. Python编写“去除字符串中所有空格”

    #利用迭代操作,实现一个trim()函数,去除字符串中所有空格 def trim(str): newstr = '' for ch in str: #遍历每一个字符串 if ch!=' ': news ...

  8. C++去掉字符串中首尾空格和所有空格

    c++去掉首尾空格是参考一篇文章的,但是忘记文章出处了,就略过吧. 去掉首尾空格的代码如下: void trim(string &s) { if( !s.empty() ) { s.erase ...

  9. JS 去除字符串中的空格

    1. 去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明: ...

随机推荐

  1. webstorm&phpstorm打开大型项目卡死解决如vue-laravel-Yii2

    用phpstorm开发时如果项目中文件过多会造成phpstorm变慢甚至卡死,尤其在node加入到我们的项目中更加会加重这种情况,因为node_modules目录中的模块非常多,phpstorm加载这 ...

  2. 课时48.表单标签-H5(了解)

    可以自动校验输入的内容是否符合邮箱的格式,我带大家随便看几个就行了,因为大部分浏览器对这几个特性有的支持,有的不支持,所以大家只要了解就好了   

  3. Oracle创建表、修改表、删除表、约束条件语法

    一. 使用create关键字创建表 --(1)创建新表use 数据库(在那个数据库中建表)create table 表名(字段名1(列名) 数据类型 列的特征,字段名2(列名) 数据类型 列的特征(N ...

  4. linux设置容器(中间件)开机自启

    /etc/rc.d/rc.local   JAVA_HOME=/usr/java/jdk1.6.0_45 su - goldsign -c '/home/goldsign/Oracle/Middlew ...

  5. acm--1004

    问题描述 再次比赛时间!看到气球在四周漂浮,多么兴奋.但要告诉你一个秘密,评委最喜欢的时间是猜测最流行的问题.比赛结束后,他们会统计每种颜色的气球并找出结果. 今年,他们决定离开这个可爱的工作给你. ...

  6. JSP/Servlet开发——第七章 Servel基础

    1.Servlet简介: ●Servlet是一个符合特定规范的 JAVA 程序 , 是一个基于JAVA技术的Web组件. ●Servlet允许在服务器端,由Servlet容器所管理,用于处理客户端请求 ...

  7. C#获取本地磁盘信息

    直接上干货简单易懂 //磁盘监控(远程/本地) //需要引用System.Management.dll public class RemoteMonitoring { private static s ...

  8. Java : Netty 入门案例

    接收端代码: public class IOServer { public static void main(String[] args) throws IOException, Interrupte ...

  9. Linux入门——vsftpd

    vsftpd Introduction vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. vsftpd 的名字代表"very secure FTP ...

  10. For-each Loop,Index++ Loop , Iterator 那个效率更高

    平时在写Java/C# 程序的时候,会写很多的Loop 语句,for() 及 Iterator loop 及Java 8 的foreach Loop, 这些Loop 那种效率最高呢?写个小程序测试一下 ...