You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的print字符串中高效格式化十六进制数?

高效格式化十六进制数到字符串任意位置

这里有几种简洁的实现方式,满足在字符串任意位置插入格式化后的十六进制数需求:

方法1:f-string + 字符串拼接(最直观)

利用f-string的灵活性,先把列表分成需要的分组,每组内的元素格式化为两位带0x前缀的十六进制字符串,再用空格连接:

a = [1, 2, 10, 30]
# 拆分列表为前后两组,分别格式化
part1 = ' '.join(f'0x{x:02x}' for x in a[:2])
part2 = ' '.join(f'0x{x:02x}' for x in a[2:])
print(f"Setting new address: [{part1}]->[{part2}]")

方法2:一次性在f-string中处理(更紧凑)

如果不想单独定义变量,可以直接在f-string内完成分组和拼接:

a = [1, 2, 10, 30]
print(f"Setting new address: [{' '.join(f'0x{x:02x}' for x in a[:2])}]->[{' '.join(f'0x{x:02x}' for x in a[2:])}]")

方法3:使用str.format()(兼容Python 3.5之前版本)

如果需要兼容更早的Python版本,用str.format()配合生成器表达式:

a = [1, 2, 10, 30]
fmt_str = "Setting new address: [{}]->[{}]"
part1 = ' '.join('0x{:02x}'.format(x) for x in a[:2])
part2 = ' '.join('0x{:02x}'.format(x) for x in a[2:])
print(fmt_str.format(part1, part2))

原代码问题说明

  • 第一个print语句写法错误:用逗号分隔格式串和参数会让print把它们当成多个独立参数输出,而非格式化字符串。即便修正为%或.format()语法,逐个传入参数的方式在元素数量多的时候也会非常繁琐。
  • 第二个print语句直接用%s替换整个列表的格式化结果,会输出列表的原生字符串表示(比如['0x01', '0x02', '0x0a', '0x14']),不符合预期格式。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:30:01