原本以为比较简单,等到做的时候,踩了一些坑。记录一下这些坑。
1.如何去除制表符,换行符\n\t\t\t等等
如果我在前端网页的输入框中输入json格式的额数据,如:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}
解决方法
d=json.JSONEncoder().encode(incase)
f=json.loads(d)
j=json.dumps(f)
h=json.loads(j)
- 其中的第一行是
- json.loads是将json字符串转化为dict字典
- json.dumps是将dict转换为json字符串。
- 这时j就已经没有其他污染符号了。最后一步就是把json转换为dict,因为写入yaml文件要用字典格式。
incase是我从网页读取的json数据,有一个重要的知识点是json中的数据与dict字典中数据一个重要的不同点是,json中的数据是用双引号的
。单引号转双引号的代码为
dict = {'as': 'df', 'zx': 'cv'}
dict = str(dict).replace('\'','\"')
其实,这行代码用不到。
2.写入yaml文件,并用yaml格式。
如果直接用
yaml.dump(dict , f.yaml)
这时写入yaml文件,查看格式,并不是yaml格式,还是挤在一起的dict。
解决方法
这时就要用这个写法
yaml.dump(dict , f.yaml ,default_flow_style=False)
3.错误!!python/unicode
如果用dump那样写在yaml文件,查看写入,就会有这个报错写入yaml文件
解决方法
将yaml.dump()
换为yaml.safe_dump