将整数格式化为带有前导零的字符串的最佳方法?
我需要向整数添加前导零以生成具有定义的数字数量($cnt)的字符串。 将这个简单函数从 PHP 转换为 Python 的最佳方法是什么:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
有一个函数可以做到这一点吗?
I need to add leading zeros to integer to make a string with defined quantity of digits ($cnt).
What the best way to translate this simple function from PHP to Python:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
Is there a function that can do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
您可以使用
zfill()
方法用零填充字符串:You can use the
zfill()
method to pad a string with zeros:标准方法是使用格式字符串修饰符。 这些格式字符串方法在大多数编程语言中都可用(例如通过 c 中的 sprintf 函数),并且是一个值得了解的方便工具。
要输出长度为 5 的字符串:
... 在 Python 3.5 及更高版本中:f-strings。
搜索 f-strings 此处了解更多详细信息。
... Python 2.6 及更高版本:
... Python 2.6 之前:
请参阅: https:// docs.python.org/3/library/string.html
The standard way is to use format string modifiers. These format string methods are available in most programming languages (via the sprintf function in c for example) and are a handy tool to know about.
To output a string of length 5:
... in Python 3.5 and above: f-strings.
Search for f-strings here for more details.
... Python 2.6 and above:
... before Python 2.6:
See: https://docs.python.org/3/library/string.html
Python 3.6 f-strings 允许我们轻松添加前导零:
看看这篇好文章 关于此功能。
Python 3.6 f-strings allows us to add leading zeros easily:
Have a look at this good post about this feature.
您很可能只需要格式化您的整数:
例如,
You most likely just need to format your integer:
For example,
Python 2.6 允许这样做:
Python 2.6 allows this:
对于 Python 3 及更高版本:
str.zfill() 仍然是最具可读性的选项,
但是研究一下新的、强大的 str.format() 是个好主意,如果你想填充不为 0 的东西怎么办?
For Python 3 and beyond:
str.zfill() is still the most readable option
But it is a good idea to look into the new and powerful str.format(), what if you want to pad something that is not 0?
您至少有两个选择:
lambda n, cnt=2: str(n).zfill(cnt)
%
格式化:lambda n, cnt=2: "%0*d" % (cnt, n)
如果在 Python >2.5 上,请参阅 clorz 答案中的第三个选项。
You have at least two options:
lambda n, cnt=2: str(n).zfill(cnt)
%
formatting:lambda n, cnt=2: "%0*d" % (cnt, n)
If on Python >2.5, see a third option in clorz's answer.
内置
zfill
的单行替代方案。该函数接受 x 并将其转换为字符串,并且仅在长度太短的情况下在开头添加零:
总结一下 - 内置:zfill > 已经足够好了,但是如果有人对如何手动实现这一点感到好奇,这里还有一个例子。
One-liner alternative to the built-in
zfill
.This function takes
x
and converts it to a string, and adds zeros in the beginning only and only if the length is too short:To sum it up - build-in:
zfill
is good enough, but if someone is curious on how to implement this by hand, here is one more example.一个简单的转换是(同样使用函数):
A straightforward conversion would be (again with a function):
这是我的 Python 函数:
This is my Python function: