如果我没有提供足够的信息,使用了错误的术语或我没有正确地格式化我的问题,我提前道歉。这是我第一次在这里提问。
这是python脚本的脚本:https://pastebin.com/WWViemwf
这是JSON文件的脚本(包含前4个元素氢、氦、锂、铍):https://pastebin.com/fyiijpBG
如图所示,我正在将文件从“.json”转换为“.csv”。
JSON文件有时包含“不适用”或“未知”的字段,或者它会显示我不熟悉的奇怪文本。
例如:
"LiquidDensity": {
"data": "NotAvailable",
"tex_description": "\\text{liquid density}"
},
还有这里
"MagneticMoment": {
"data": "Unknown",
"tex_description": "\\text{magnetic dipole moment}"
},
下面是我把.json文件转换成.csv文件的代码:
#liquid density
liquid_density = element_data["LiquidDensity"]["data"]
if isinstance(liquid_density, dict):
liquid_density_value = liquid_density["value"]
liquid_density_unit = liquid_density["tex_unit"]
else:
liquid_density_value = liquid_density
liquid_density_unit = ""
然而,在csv文件中,它显示为this。
我还试图删除这些characters,我看到在“.csv”文件。
在JSON文件中,数据的查看方式如下:
"AtomicMass": {
"data": {
"value": "4.002602",
"tex_unit": "\\text{u}"
},
"tex_description": "\\text{atomic mass}"
},
这是我如何用Python编写转换代码的:
#atomic mass
atomic_mass = element_data["AtomicMass"]["data"]
if isinstance(atomic_mass, dict):
atomic_mass_value = atomic_mass["value"]
atomic_mass_unit = atomic_mass["tex_unit"]
else:
atomic_mass_value = atomic_mass
atomic_mass_unit = ""
我做错了什么?
我已尝试替换:
#melting point
melting_point = element_data["MeltingPoint"]["data"]
if isinstance(melting_point, dict):
melting_point_value = melting_point["value"]
melting_point_unit = melting_point["tex_unit"]
else:
melting_point_value = melting_point
melting_point_value = ""
其中:
#melting point
melting_point = element_data["MeltingPoint"]["data"]
if isinstance(melting_point, dict):
melting_point_value = melting_point["value"]
melting_point_unit = melting_point["tex_unit"]
elif melting_point == "NotApplicable" or melting_point == "Unknown":
melting_point_value = ""
melting_point_unit = ""
else:
melting_point_value = melting_point
melting_point_unit = ""
然而,这似乎不起作用。
1条答案
按热度按时间ui7jx7zq1#
你的代码是好的,什么地方出了问题是在写作,让我拿出一些部分。
您直接将liquid_density写入csv,这就是为什么它显示字典。如果您只想写入值,我认为您应该将write line中的值更改为
writer.writerow([..., liquid_density_value, ...])