[英]Python: How to convert multiple list that have multiple digits into array?
[英]How to have an ordered list of files with digits?
我有一个文件文件夹,想一个一个地读取文件,因为它是视频的帧。
但是,当我试图获得一个有序的文件列表时,它的顺序如下:
data_dir = './data/'
filenames =listdir(data_dir)
N=len(filenames)
filenames.sort()
filenames
['Image1.jpg',
'Image10.jpg',
'Image11.jpg',
'Image12.jpg',
'Image13.jpg',
'Image14.jpg',
'Image15.jpg',
'Image2.jpg',
'Image3.jpg',
'Image4.jpg',
'Image5.jpg',
'Image6.jpg',
'Image7.jpg',
'Image8.jpg',
'Image9.jpg']
如何根据数字获得有序的图像列表?
使用正则表达式提取数字部分并使用自定义排序进行相应排序,您也可以使用正则表达式,如r"Image(\d+).jpg"
来精确。
import re
data_dir = './data/'
filenames =listdir(data_dir)
N=len(filenames)
filenames.sort(key=lambda filename : int(''.join(re.findall("\d+",filename))))
filenames
key
使用sorted
后的 function 和lambda
(假设所有文件名都包含“IMG”):
sorted_filenames = sorted(filenames, key= lambda x: int(x.split("IMG")[1].split(".")[0]))
结果:
['IMG1.bmp',
'IMG2.bmp',
'IMG3.bmp',
'IMG4.bmp',
'IMG5.bmp',
'IMG6.bmp',
'IMG7.bmp',
'IMG8.bmp',
'IMG9.bmp',
'IMG10.bmp',
'IMG11.bmp',
'IMG12.bmp',
'IMG13.bmp',
'IMG14.bmp',
'IMG15.bmp']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.