Python格式化输出报错ValueError: Unknown format code 'd' for 'str'咨询
问题原因
报错是因为NASA API返回的kilometers距离字段是字符串类型,而格式符d仅支持整数类型的变量。你参考的官方示例中phone变量本身就是整数,所以可以正常使用d格式符。
解决方案
可根据需求选择以下任意一种修复方式:
- 方案1:转整数后使用整数格式符
如果不需要保留距离的小数部分,修改变量赋值代码,将字符串转成整数:
原有格式化语句distance = int(float(json['near_earth_objects'][date][x]['close_approach_data'][0]['miss_distance']['kilometers']))print(f"Name: {name:25} Entfernung km: {distance:25d}")无需修改即可正常运行。 - 方案2:转浮点数后使用浮点格式符
如果需要保留小数精度,先将字符串转成浮点类型:
格式化语句调整为对应浮点格式,示例保留2位小数:distance = float(json['near_earth_objects'][date][x]['close_approach_data'][0]['miss_distance']['kilometers'])print(f"Name: {name:25} Entfernung km: {distance:25.2f}") - 方案3:不修改数据类型,直接使用通用右对齐格式
无需修改变量赋值,仅调整格式化语句,用>指定右对齐规则,适配字符串、数字等多种类型:print(f"Name: {name:25} Entfernung km: {distance:>25}")
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

