我的问题是我重新阅读此内容但是在字符串中
obj = {"rnc": "44444044444",
"cliente": "EMPRESA S.A.",
"ncf": "1234567890123456789",
"ncf_ref": "0987654321098765432",
"tipo": "FacturaConsumidorFinal", # Ver clase ReceiptEnum para valores permitidos
"logo": false,
"lineas": [{
"descripcion": ["Linea 1", ..., "Linea 10"],
"cantidad": 2,
"importe": 12.00,
"itbis": 13.0,
"tipo_pago": "LineaVenta", # Ver clase ReceiptItemEnum para valores permitidos
"qtyxprice": True,
"promocion": False"
}],
"pagos": [{
"tipo": 1, # valor entre 1 y 14, según tipos de pago configurados
"importe": 1200.00,
"cancelado": False,
"descripcion": ["linea 1", "linea 2", "lines 3"],
}],
"descuentos": [{ # descuento o recargo global
"descripcion": "lalalala",
"importe": 1200.00
}],
"densidad": "ppp180x180" # ver clase PrinterDensity para valores permitidos
}
我使用
转换为字典import ast
linea = ast.literal_eval(obj)
即时尝试阅读内线['importe']以将值12.00更改为1200当然使用int,我知道该怎么做,只需要乘以100 例如
#12.00
int(12.00*100) = 1200 #they always need to end with '00'
int(2*100) = 200
但是我不知道如何与linea ['itbis] ... pagos ['importe']和descuentos ['importe']达到相同的目标,并且结束它会像这样输出。
{"rnc": "44444044444",
"cliente": "EMPRESA S.A.",
"ncf": "1234567890123456789",
"ncf_ref": "0987654321098765432",
"tipo": "FacturaConsumidorFinal", # Ver clase ReceiptEnum para valores permitidos
"logo": false,
"lineas": [{
"descripcion": ["Linea 1", ..., "Linea 10"],
"cantidad": 2,
"importe": 1200, #<----- here(12.00)
"itbis": 1300, #<----- here(13.00)
"tipo_pago": "LineaVenta", # Ver clase ReceiptItemEnum para valores permitidos
"qtyxprice": True,
"promocion": False"
}],
"pagos": [{
"tipo": 1, # valor entre 1 y 14, según tipos de pago configurados
"importe": 120000, #<----- here (1200.00)
"cancelado": False,
"descripcion": ["linea 1", "linea 2", "lines 3"],
}],
"descuentos": [{ # descuento o recargo global
"descripcion": "lalalala",
"importe": 120000 #<----- here (1200.00)
}],
"densidad": "ppp180x180" # ver clase PrinterDensity para valores permitidos
}
我试图
for k,v in obj.items():
for thing in v:
print v
但是我得到了一个错误并结束了 Traceback(最近一次调用最后一次): 文件“”,第2行,in TypeError:'bool'对象不可迭代
非常感谢您阅读这个长篇解释x_X
答案 0 :(得分:0)
您收到此错误,因为并非您的dict中的所有值都是可迭代的。如果你想迭代整个字典以找到你描述的值(即你不完全知道字典的内容),你可以这样做:
for k,v in obj.items():
if hasattr(v, '__iter__'):
for thing in v:
print thing
else:
print v
第if hasattr(v, '__iter__'):
行会判断您的商品是否可以呈现(参考此问题In Python, how do I determine if an object is iterable?)