在python dict中打印键值时出错:字符串索引必须是整数
我试图分别访问python字典中的所有键和值。数据是excel格式的,所以我把它转换成了字典。在在python dict中打印键值时出错:字符串索引必须是整数,python,json,dictionary,key-value,Python,Json,Dictionary,Key Value,我试图分别访问python字典中的所有键和值。数据是excel格式的,所以我把它转换成了字典。在tower.json文件中,我得到的输出如下: [{"Item": "LD1C", "Rel": "40410"}, {"Item": "LD1D", "Rel": "40411"}, …..}] 如何分别打印各种项目和rels import xlrd from collections import OrderedDict import json wb = xlrd.open_workbook(r
tower.json
文件中,我得到的输出如下:
[{"Item": "LD1C", "Rel": "40410"}, {"Item": "LD1D", "Rel": "40411"}, …..}]
如何分别打印各种项目
和rels
import xlrd
from collections import OrderedDict
import json
wb = xlrd.open_workbook(r'C:\Users\eumukar\Desktop\test data.xlsx')
sh = wb.sheet_by_index(0)
tower_list = []
for rownum in range(1, sh.nrows):
tower = OrderedDict()
row_values = sh.row_values(rownum)
tower['Item'] = row_values[0]
tower['EUtranCellRelation'] = row_values[1]
tower_list.append(tower)
dat = json.dumps(tower_list)
with open(r'C:\Users\eumukar\Desktop\tower.json', 'w') as f:
f.write(dat)
在尝试打印密钥/项目时,我写了这篇文章并得到一个错误:
for i in dat:
print(i,dat[i])
1 for i in dat:
----> 2 print(i,dat[i])
TypeError: string indices must be integers
错误的原因是没有枚举对象意味着它没有索引 试试下面的代码
for i in enumerate(dat):
print(i,dat[i])
有关更多详细信息,请访问为什么要访问
dat[i]
?迭代器不会生成范围索引,而是生成值。所以i
不是索引,而是实际值
此外,dat
在这里是一个字符串,迭代字符串会产生单个字符(作为字符串),为什么要这样做
PS:当使用文本模式IO(
open
而不使用'b'
标志)时,您确实希望明确地提供编码
参数,以避免不好的意外情况。json.dumps
返回字符串json。dumps
将为您提供strUse-tower-json来解析相同的错误,但我会检查出来。谢谢