python - 使用格式化字符串分隔数字组
问题描述
给定一个12345678910
我想输出的数字number id 123.456.789-10
。
我试过这个:
print('number id {0:1.3}.{0:1.3}.{0:1.3}-{0:1.3}'.format("12345678910"))
但结果是number id 123.123.123-123
。如何正确执行此操作?
解决方案
这是实现您想要做的事情的一种方法:
number = "12345678910"
print(
'number id {0}.{1}.{2}-{3}'.format(
*[number[i:i+3] for i in range(0,len(number), 3)]
)
)
#number id 123.456.789-10.
您的代码存在一些问题。首先,第一个数字是"{0...}"
指format()
函数中的位置参数。在您的情况下,您使用的 all0
仅指第一个参数。这就是为什么一遍又一遍地重复相同的子字符串的原因。(请注意我如何将其更改为{0}.{1}...{3}
.)
我正在传递*[number[i:i+3] for i in range(0,len(number), 3)]
给 format 函数,它只是将你的字符串分成 3 个块。
print([number[i:i+3] for i in range(0,len(number), 3)])
#['123', '456', '789', '10']
*
运算符进行参数解包,将列表中的元素依次传递给format()
.
更新:
正如@user2357112在评论中提到的那样,在这种情况下,您实际上不需要大括号内的任何东西。只是{}
用来代表占位符。
print(
'number id {}.{}.{}-{}'.format(
*[number[i:i+3] for i in range(0,len(number), 3)]
)
)
推荐阅读
- dynamic-programming - Coin Chane - 动态规划 - 如何从 DP 表中读取所有解决方案
- apache-kafka - Kafka - 基于时间戳消费消息
- c++ - 如何通过柯南和 CMake 查找 pkg-config 的 .pc 文件
- javascript - 使用 java 脚本对象(sql、express、react)的存储过程
- jquery - 按类名查找下一部分
- python - Python - 从 API 获取数据
- c - 为什么不能在动态分配的内存块中存储一个非常大的单个值?
- laravel - Laravel api 对 POST 请求进行身份验证,但使用 GET 返回“未验证”
- swift - 想在swift ios中实现这种类型(张贴的图像)侧边菜单
- java - 从 Map 的 Java 流中按键对它们进行分组并找到最大值未按预期工作