Python:在逗号之前用恒定数量的字符编写数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:在逗号之前用恒定数量的字符编写数字相关的知识,希望对你有一定的参考价值。

我尝试从一些存储在公共目录中的png文档(我自己创建)中构建一个gif文件(名为say name)。我在终端中使用的命令如下:

convert -delay 2 -loop 0 * .png -scale 960x520 name.gif

上面的命令将使用词典顺序中的所有png文件(这是命令的“* .png”部分),但我的问题是我无法以良好的方式对文件进行排序。我的所有文件都代表某个时间t的函数图,所以我将这些文件命名为“t.png”,其中t的范围是1到100,比如说;例如,“file 1.png”来自“10.png”,因为“。”在“0”之后出现,依此类推。

解决它的方法是以相同的格式写出从1到100的每个数字t,例如:001,002,003,004,005,006,007,009,009,011,012等。即,我想用相同数量的字符(这里是3)来写数字t。因为这个t的范围可以从1到任意大的整数,所以我宁愿避免在我的代码中添加一些内容来检测写入t所需的字符数,然后添加剩余的0。此外,我确信有一种非常简单的方法可以按照我想要的方式编写t,即使我还没想到它(我也没有在其他地方找到有用的东西)。

如果还有人有另一种方法来正确地对我的图表进行排序,那么他或她将非常受欢迎(我已经尝试过使用创建文件的日期,因为t小于t'意味着t.png已经创造了BEFORE t'.png,但到目前为止再没有运气......)。

提前致谢 !

答案

有两种方法可以解决这个问题。首先,你可以按照你的建议在文件名中加上前导零。你可以通过格式化数字来做到这一点,如下所示:

>>> t = 32
>>> f"{t:03d}.png"
'032.png'

请注意格式字符串的f前缀。这很重要。把它拿出来会发生这种情况:

>>> "{t:03d}.png"
'{t:03d}.png'

如果解释器抱怨f然后你使用Python 3.6或更早版本而你需要这样做:

>>> "{0:03d}.png".format(t)
'032.png'

另一种方法是按照您的方式创建文件名,然后通过在key中指定排序规则将它们排序为您想要的顺序:

>>> filelist = ["1.png","2.png","10.png","100.png"]
>>> sorted(filelist, key=lambda f: int(f.partition(".")[0]))
['1.png', '2.png', '10.png', '100.png']

而不是仅采用默认排序顺序:

>>> sorted(filelist)
['1.png', '10.png', '100.png', '2.png']

以上是关于Python:在逗号之前用恒定数量的字符编写数字的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将包含逗号的抓取字符串转换为整数

在python中获取冒号之后和逗号之前的值[重复]

python 用pandas DataFrame中的逗号将数字字符串转换为float。

使用SQL如何把用逗号等字符隔开的字符串转换成列表

java面试题:如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符英文字符数字字符之外的其他特殊字符(代

编写一个程序 输入一系列单词 用逗号隔开,然后提取这些单词,并分行输出,删除空格