我已将格式化我的字符串看起来像JSON我可以做到的json.loads.当我在屏幕上打印时,它结果搞砸了订单.我知道Python的dictonaries没有订购,但有没有办法保持这个顺序?我真的需要保留它.谢谢!
我是python(和一般编码)的新手,我已经走到这一步但我遇到了麻烦.我正在查询一个返回json文件的Web服务,该文件包含每个员工的信息.我想为每位员工提供几个属性,但我遇到了一些麻烦.
到目前为止我有这个脚本:
import json
import urllib2
req = urllib2.Request('http://server.company.com/api')
response = urllib2.urlopen(req)
the_page = response.read()
j = json.loads(the_page)
print j[1]['name']
Run Code Online (Sandbox Code Playgroud)
它返回的JSON看起来像这样......
{
"name": bill jones,
"address": "123 something st",
"city": "somewhere",
"state": "somestate",
"zip": "12345",
"phone_number": "800-555-1234",
},
{
"name": jane doe,
"address": "456 another ave",
"city": "metropolis",
"state": "ny",
"zip": "10001",
"phone_number": "555-555-5554",
},
Run Code Online (Sandbox Code Playgroud)
您可以看到,通过脚本,我可以返回索引1中员工的姓名.但我希望有更多的内容:print j[**0 through len(j)**]['name']因此它将打印出每个员工的姓名(最好是电话号码) json列表.
我很确定我接近错了,但我需要一些反馈和指导.
我正在获取具有以下格式的JSON文件:
// 20170407
// http://info.employeeportal.org
{
"EmployeeDataList": [
{
"EmployeeCode": "200005ABH9",
"Skill": CT70,
"Sales": 0.0,
"LostSales": 1010.4
}
]
}
Run Code Online (Sandbox Code Playgroud)
需要删除文件中存在的多余注释行。
我尝试使用以下代码:
import json
import commentjson
with open('EmployeeDataList.json') as json_data:
employee_data = json.load(json_data)
'''employee_data = json.dump(json.load(json_data))'''
'''employee_data = commentjson.load(json_data)'''
print(employee_data)`
Run Code Online (Sandbox Code Playgroud)
仍然无法从文件中删除注释,并以正确的格式导入JSON文件。
无法到达哪里出了问题?在这方面的任何方向都受到高度赞赏。
我编写了一个小程序并测试它确实保持了顺序。然而,我仍然想确保deepcopy能够做到这一点。
import copy
import collections
a_dict = collections.OrderedDict()
a_dict['m'] = 10
a_dict['u'] = 15
a_dict['c'] = 5
a_dict['h'] = 25
a_dict['a'] = 55
a_dict['s'] = 30
print(a_dict)
other_dict = copy.deepcopy(a_dict)
other_dict['g'] = 75
other_dict['r'] = 35
print(other_dict)
Run Code Online (Sandbox Code Playgroud)
该程序的输出是
OrderedDict([('m', 10), ('u', 15), ('c', 5), ('h', 25), ('a', 55), ('s', 30)])
OrderedDict([('m', 10), ('u', 15), ('c', 5), ('h', 25), ('a', 55), ('s', 30), ('g', 75), ('r', 35)])
Run Code Online (Sandbox Code Playgroud) 我通过导入集合创建了一个python Ordered Dictionary并将其存储在名为'filename.txt'的文件中.文件内容看起来像
OrderedDict([(7, 0), (6, 1), (5, 2), (4, 3)])
Run Code Online (Sandbox Code Playgroud)
我需要从另一个程序中使用这个OrderedDict.我这样做
myfile = open('filename.txt','r')
mydict = myfile.read()
Run Code Online (Sandbox Code Playgroud)
我需要获得类型的'mydict'
<class 'collections.OrderedDict'>
Run Code Online (Sandbox Code Playgroud)
但在这里,它出现了'str'类型.
有没有办法在python中将字符串类型转换为OrderedDict类型?使用python 2.7
我在使用python从文件中读取json时遇到问题.数据存储在未排序的字典中.我想将列表变量中的数据存储为正确的顺序.
flookup = open('lookup.json')
self.tags = json.loads(flookup.read())
flookup.close()
Run Code Online (Sandbox Code Playgroud)
self.tags包含未根据lookup.json文件排序的数据
{
"JournalTitle": "Journal Title",
"PubCode": "Pub Code",
"UniqueDocumentID": "Unique Document ID"
}
Run Code Online (Sandbox Code Playgroud) 我想以一种很好的方式打印Json,我想摆脱括号,引号和括号,只使用缩进和行结尾来显示json的结构.
例如,如果我有这样的Json:
{
"A": {
"A1": 1,
"A2": 2
},
"B": {
"B1": {
"B11": {
"B111": 1,
"B112": 2
},
"B12": {
"B121": 1,
"B122": 2
}
},
"B2": {
"B21": [1,2],
"B22": [1,2]
}
},
"C": "CC"
}
Run Code Online (Sandbox Code Playgroud)
如何通过删除{}和[]来打印json,我想要的是:
A:
A1: 1
A2: 2
B:
B1:
B11:
B111: 1
B112: 2
B12:
B121: 1
B122: 2
B2:
B21: 1, 2
B22: 1, 2
C: CC
Run Code Online (Sandbox Code Playgroud) 如何在任何节点(value1、value2、value3、value4、value5、value6、value7)中使用 Python 更改 JSON 中的值:
{
"key1": "value1",
"level2": {
"key2": "value2",
"key3": "value3",
"level3": [
{
"key4": "value4",
"level5": [
{
"key5": "value5",
"key6": "value6"
}
],
"key7": "value7"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在使用其他一些值更改例如 Value6 之后 - 我想以一种很好的打印格式(与上面相同)打印新的 JSON。
谢谢。
如何OrderedDict在保留相同顺序的同时将转换为普通字典?
我问这个的原因是因为当我从API获取数据时,我得到一个JSON字符串,我用它json.loads(str)来返回一个字典.返回的这个字典json.loads(...)只是乱序,随机排序.另外,我读过这个OrderedDict工作很慢,所以我想使用与原始JSON字符串相同顺序的常规字典.
稍微偏离主题:无论如何都要将JSON字符串转换为dict,json.loads(...)同时保持相同的顺序而不使用collections.OrderedDict?
我有一个名为example_dict.py的文件
#This is a valid comment
{
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
}
Run Code Online (Sandbox Code Playgroud)
然后我读了这个文件并转换dict:
from collections import OrderedDict
with open("example_dict.py") as fp:
dict_from_file = OrderedDict( eval( fp.read() ) )
Run Code Online (Sandbox Code Playgroud)
但是这个"dict_from_file"没有相同的顺序key1,key2,key3.
我怎么能以同样的顺序得到这个字典.
基本的 Python csv to json 脚本在最终的 JSON 中混合了列顺序。知道为什么吗?
测试文件
animal,age,count,legs
dogs,3,5,4
cats,6,4,4
birds,2,1,2
Run Code Online (Sandbox Code Playgroud)
脚本
import csv
import json
csvfile = open('test.csv', 'r')
jsonfile = open('test.json', 'w')
reader = csv.DictReader( csvfile)
jsonfile.write('[')
for row in reader:
json.dump(row, jsonfile)
jsonfile.write(',\n')
jsonfile.write(']')
Run Code Online (Sandbox Code Playgroud)
测试文件
[{"count": "5", "age": "3", "legs": "4", "animal": "dogs"},
{"count": "4", "age": "6", "legs": "4", "animal": "cats"},
{"count": "1", "age": "2", "legs": "2", "animal": "birds"},
]
Run Code Online (Sandbox Code Playgroud) python ×11
json ×7
dictionary ×3
python-2.7 ×2
string ×2
csv ×1
deep-copy ×1
parsing ×1
structure ×1
urllib2 ×1