我创建一个具有以下内容的列表:
import os
files=[f for f in os.listdir(source) if f.endswith('.tif')]
有时这会给出如下结果:
files=['file_1263_1-001.tif', 'file_1263_2-002.tif', 'file_1263_3-003.tif']
for f in files:
l1 = f.split("_")
print( l1[2].split("-") )
返回:
['1', '001.tif']
['2', '002.tif']
['3', '003.tif']
但有时我会得到以下结果:
files=['file_0563_74-001.tif', 'file_0563_74-002.tif', 'file_0563_74-003.tif']
for f in files:
l1 = f.split("_")
print( l1[2].split("-") )
返回:
['74', '001.tif']
['74', '002.tif']
['74', '003.tif']
我想创建一个流控制,如果第一列(例如74)具有相同的值,那么除了它包含不同的值(例如1、2、3)以外,还要进行其他操作。
我该怎么做?
答案 0 :(得分:0)
您可以使用集合理解来提取唯一类型。然后使用if
/ else
构造根据您是否只有一个这样的类型来应用逻辑。
files = ['file_1263_1-001.tif', 'file_1263_2-002.tif', 'file_1263_3-003.tif']
file_types = {fn.split('-')[0].rsplit('_')[-1] for fn in files}
if len(file_types) == 1:
# do something
else:
# do something else
答案 1 :(得分:0)
以这种方式执行:
files = [f.split('_')[2].split('-') for f in files]
files
Output: [['1', '001.tif'], ['2', '002.tif'], ['3', '003.tif']]
检查所有第一个元素是否相同。如果相同,则唯一元素的长度将为1
if len(set([x[1] for x in files])) == 1: # checks first elements are same
# do something
else:
# do something