能否通过str.format()不使用ord()将单字符转换为对应ASCII整数值
结论
原生Python的str.format()方法不支持直接将字符串类型的单个字符转换为十进制ASCII码值输出,也不存在完全不借助ord()或者等效字符转码逻辑的实现方案,必须借助ord()函数完成转换。
原因说明
str.format()的格式说明符和传入参数的类型是强绑定的:
- 你示例中使用的
{:d}是针对整数类型的格式符,只能格式化整数参数 - 你传入的
'a'是字符串类型,Python不会默认帮你做字符到ASCII码的隐式转换,直接运行你写的代码会抛出ValueError: Unknown format code 'd' for object of type 'str'报错。
可行实现方式
你只需要用ord()先把单个字符转换为对应的ASCII整数,再传入format()即可,代码如下:
>>> 'ASCII value is: {:d}'.format(ord('a')) 'ASCII value is: 97'
如果不想在format的参数里写ord(),也可以提前完成转换:
target_char = 'a' ascii_code = ord(target_char) print('ASCII value is: {:d}'.format(ascii_code))
内容的提问来源于stack exchange,提问作者Oleksandr Novik
相关产品推荐
相关产品推荐

