我正在研究一個程序,該程序會搜索數據庫中的所有文件,並根據文件名中的數字(從001到100)對它們進行分組。註冊前識別前導零?
唯一的問題是,python將'001'解釋爲'1',但'001'是文件名中的確切數字,並且由於我使用正則表達式來搜索它並不能識別數字我想要的方式。
真的很感謝一些幫助!這裏是我到目前爲止的代碼:
import sys
import os
import re
import glob
time_data = open("time_data.txt", "w")
space_data = open("space_data.txt", "w")
folder_list = ['/Users/fenyolab/Downloads/root images/pet week img seq - removed 621 and after - ch1 registered', 'C:/Users/fenyolab/Downloads/root images/0329 to 033116 - WERSCR regen - STELLAR - registered', 'C:/Users/fenyolab/Downloads/root images/0406 to 040816 - H2BIAAWOX regen - GOOD - pt II - REGISTERED']
def stack_at_time_point(direc, time_point):
time_list = []
for x in glob.glob('%s/*' % direc):
if re.search("t.*%s_z" % time_point, x) != None and re.search('_c1.*', x) != None:
time_list.append(x)
for i in time_list:
time_data.write("%s\n" % i)
def stack_at_zlocation(direc, location):
location_list = []
for x in glob.glob('%s/*' % direc):
if re.search("_z.*%s_." % location, x) != None and re.search('_c1.*', x) != None:
location_list.append(x)
for i in location_list:
space_data.write("%s\n" % i)
for i in folder_list:
for x in xrange(100):
stack_at_zlocation(i, x)
space_data.write("\n\n\n")
stack_at_time_point(i, x)
time_data.write("\n\n\n")
space_data.close()
time_data.close()
print "Done."
正則表達式"_z.*%s_." % location
將匹配到_z023_
如果指定的位置是23,但如果指定的位置是1,程序將返回_z001_, _z011_, _z021_, _z031_, _z041_ ... _z091_.
字母'z'後面跟着一個三位數,零填充的數字? –
是的!不幸的是,這就是文件給我的方式,而且有數以千計的手動重命名。 –
在這種情況下,@Robᵩ指出使用'%03d'而不是'%s'。 –