我有一堆jpg文件,其名称如下:
1_fileid1_1.jpg
2_fileid1_1.jpg
1_fileid1_2.jpg
2_fileid1_2.jpg
...
1_fileidn_m.jpg
2_fileidn_m+1.jpg
第一个数字来自2个部分的序列,因此id为fileid1的文件的第1部分以1_开头,第2部分以2_开头。最后一个数字是页面,因为这些是从文档创建的图像文件,因此_1是第1页,_2是第2页,依此类推。页面可以是任意数字,但每页的部分总是只有2个。
现在我想读取这些文件,以便我可以按顺序将它们分组,可能在元组或列表中,这样序列应该类似于。
seq1 = (1_fileid1_1.jpg, 2_fileid1_1.jpg)
seq2 = (1_fileid1_2.jpg, 2_fileid1_2.jpg)
...
seqx = (1_fileidn_m.jpg, 2_fileidn_m.jpg)
每个文件的每个页面都是不同的序列。
在python中有一种简单的方法吗?也许使用re.match?但是我怎样才能确保一个序列中的两个文件具有相同的结尾,即_1.jpg(包括.jpg是有用的,因为那样我可以避免其他类型的文件)。
编辑: 如果文件在不同的行上,Rizman的解决方案可以正常工作。如果文件的名称一起列在列表中并与文件的路径一起怎么办?像这样:
../path/to/file1/1_file1_1.jpg/path/to_file2/2_file1_1.jpg...
我尝试修改Rizwan的解决方案:https://regex101.com/r/HvzkwL/5/
但它不起作用。
答案 0 :(得分:1)
根据操作帖子中的更改进行了更新:
使用它:
(.*?/\d+(_.*?\.jpg))(.*?/)(\d+)\2
并替换为:
\($1,$3$4$2\)
您可以尝试这种方法:
(\d+(_[^\.]+\.jpg))\n(\d+)\2
并替换为:
($1,$3$2)