[英]comparing a list of strings with a path which contains files
i have a list of paths to files:我有一个文件路径列表:
rasterfiles= glob.glob(r'Y:\5_Wetter\system\ecmwf_data\temperature\*\*avg.tif')
rasterfiles = ['Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000291_temperature_avg.tif, 'Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000225_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000027_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000254_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000177_temperature_avg.tif,...']
and the list:和清单:
def dates_to_dayoftheyears(start, end):
duration = end - start
period = []
for d in range(duration.days + 1):
day = start + timedelta(days=d)
period.append(day)
year = []
for day in period:
year.append(day.strftime('%Y'))
dayoftheyear = []
for day in period:
dayoftheyear.append(day.strftime('%j'))
year_and_days = [a+ b for a,b in zip(year, dayoftheyear)]
return year_and_days
print (dates_to_dayoftheyears(date(2013,4,1), date(2013,4,30)))
Output Output
['2013091', '2013092', '2013093', '2013094', '2013095', '2013096', '2013097', '2013098', '2013099', '2013100', '2013101', '2013102', '2013103', '2013104', '2013105', '2013106', '2013107', '2013108', '2013109', '2013110', '2013111', '2013112', '2013113', '2013114', '2013115', '2013116', '2013117', '2013118', '2013119', '2013120']
How can I only extract those files within my rasterfiles
list which have the same string sequence as my second list?我怎样才能只提取我的
rasterfiles
列表中与我的第二个列表具有相同字符串序列的那些文件?
You can simply iterate through the values您可以简单地遍历这些值
import os
rasterfiles = ['Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000291_temperature_avg.tif', 'Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000225_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000027_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000254_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000177_temperature_avg.tif']
dates = ['2013091', '2013092', '2013093', '2013094', '2013095', '2013096', '2013097', '2013098', '2013099', '2013100', '2013101', '2013102', '2013103', '2013104', '2013105', '2013106', '2013107', '2013108', '2013109', '2013110', '2013111', '2013112', '2013113', '2013114', '2013115', '2013116', '2013117', '2013118', '2013119', '2013120']
result = []
for f in rasterfiles:
for d in dates:
if d in os.path.basename(f):
result.append(f)
print(result)
In a more sophisticated version, you can use a regular expression to extract the date part of the filename and use it to compare to the dates list:在更复杂的版本中,您可以使用正则表达式提取文件名的日期部分,并使用它与日期列表进行比较:
import os
import re
rasterfiles = ['Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000291_temperature_avg.tif', 'Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000225_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000027_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000254_temperature_avg.tif','Y:\\5_Wetter\\system\\ecmwf_data\\temperature\\2000\\ecmwf_2000177_temperature_avg.tif']
dates = ['2013091', '2013092', '2013093', '2013094', '2013095', '2013096', '2013097', '2013098', '2013099', '2013100', '2013101', '2013102', '2013103', '2013104', '2013105', '2013106', '2013107', '2013108', '2013109', '2013110', '2013111', '2013112', '2013113', '2013114', '2013115', '2013116', '2013117', '2013118', '2013119', '2013120']
re_pattern = "[a-zA-Z]+_([0-9]{6,8})_.*"
result = []
for f in rasterfiles:
m = re.search(re_pattern, os.path.basename(f))
if (m != None):
if m.group(1) in dates:
result.append(f)
print(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.