如何从 excel 个工作表创建嵌套字典并将它们合并在一起
How to create nested dictionary from excel sheets and merge them together
提前感谢您的帮助。我是 python 的新手。我有以下 excel sheets:
sheet 1 sheet 2
A B C D E A B
1 a 27 BG 10 1 url_1
2 b 10 UK 20 1 url_2
3 c 15 US 30 2 url_3
4 url_4
我想创建一个 json 格式的数据:
{"A": 1,"B":"a","C": "27","D":"BG", "E":"10","webs": [{ "web" :"url_1" , "web" : "url_2" }]},
{"A": 2,"B": "b","C": "10","D":"UK","E":"20", "webs": [{"web" :"url_3'}]},
{"A: 3, "B": "c", "C": "15","D":"US", "E":"30", "webs: [{ "web : "url_4" }]}
我在使用以下代码将第二个 sheet 分组到第一个时遇到问题:
for row in range(1, sheet_1.nrows):
row_values = sheet_1.row_values(row)
b = {}
a= row_values[0]
b['A'] = row_values[0]
b['B'] = row_values[1]
b['C'] = row_values[2]
b['D'] = row_values[3]
b['E'] = row_values[4]
for rows in range(1, sheet_2.nrows):
row = sheet_2.row_values(rows)
if row_values[0] == row[0]:
b['webs'] = [{'web':row[1]}]
print(b)
产生以下输出
{'A': 1.0, 'B': 'a', 'C': 27.0, 'D': 'BG', 'E': 10.0, 'webs': [{'web': 'url_2'}]}
{'A': 2.0, 'B': 'b', 'C': 10.0, 'D': 'UK', 'E': 20.0, 'webs': [{'web': 'url_3'}]}
{'A': 3.0, 'B': 'c', 'C': 15.0, 'D': 'US', 'E': 30.0, 'webs': [{'web': 'url_4'}]}
如有任何帮助,我们将不胜感激。
最佳,
b['webs']
变量不断更新值而不是将其存储在列表中,最后存储第二个sheet的最后匹配行的值。
for row in range(1, sheet_1.nrows):
row_values = sheet_1.row_values(row)
b = {}
b['A'] = row_values[0]
b['B'] = row_values[1]
b['C'] = row_values[2]
b['D'] = row_values[3]
b['E'] = row_values[4]
temp = [] #Initialize empty list
for rows in range(1, sheet_2.nrows):
row = sheet_2.row_values(rows)
if row_values[0] == row[0]:
temp.append({'web':row[1]}) #append the item to the list
b['webs'] = temp
print(b)
这应该暂时有效。但如果您想使用 Python.
处理 excel 数据,请考虑探索 Python 的 Numpy 库
提前感谢您的帮助。我是 python 的新手。我有以下 excel sheets:
sheet 1 sheet 2
A B C D E A B
1 a 27 BG 10 1 url_1
2 b 10 UK 20 1 url_2
3 c 15 US 30 2 url_3
4 url_4
我想创建一个 json 格式的数据:
{"A": 1,"B":"a","C": "27","D":"BG", "E":"10","webs": [{ "web" :"url_1" , "web" : "url_2" }]},
{"A": 2,"B": "b","C": "10","D":"UK","E":"20", "webs": [{"web" :"url_3'}]},
{"A: 3, "B": "c", "C": "15","D":"US", "E":"30", "webs: [{ "web : "url_4" }]}
我在使用以下代码将第二个 sheet 分组到第一个时遇到问题:
for row in range(1, sheet_1.nrows):
row_values = sheet_1.row_values(row)
b = {}
a= row_values[0]
b['A'] = row_values[0]
b['B'] = row_values[1]
b['C'] = row_values[2]
b['D'] = row_values[3]
b['E'] = row_values[4]
for rows in range(1, sheet_2.nrows):
row = sheet_2.row_values(rows)
if row_values[0] == row[0]:
b['webs'] = [{'web':row[1]}]
print(b)
产生以下输出
{'A': 1.0, 'B': 'a', 'C': 27.0, 'D': 'BG', 'E': 10.0, 'webs': [{'web': 'url_2'}]}
{'A': 2.0, 'B': 'b', 'C': 10.0, 'D': 'UK', 'E': 20.0, 'webs': [{'web': 'url_3'}]}
{'A': 3.0, 'B': 'c', 'C': 15.0, 'D': 'US', 'E': 30.0, 'webs': [{'web': 'url_4'}]}
如有任何帮助,我们将不胜感激。
最佳,
b['webs']
变量不断更新值而不是将其存储在列表中,最后存储第二个sheet的最后匹配行的值。
for row in range(1, sheet_1.nrows):
row_values = sheet_1.row_values(row)
b = {}
b['A'] = row_values[0]
b['B'] = row_values[1]
b['C'] = row_values[2]
b['D'] = row_values[3]
b['E'] = row_values[4]
temp = [] #Initialize empty list
for rows in range(1, sheet_2.nrows):
row = sheet_2.row_values(rows)
if row_values[0] == row[0]:
temp.append({'web':row[1]}) #append the item to the list
b['webs'] = temp
print(b)
这应该暂时有效。但如果您想使用 Python.
处理 excel 数据,请考虑探索 Python 的 Numpy 库