объединение функций разделения и подсчета вхождений в python - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю список с:

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).
Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Делайте так:

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
0 голосов
/ 15 ноября 2018

Вы можете использовать набор понимания для извлечения уникальных типов. Затем используйте конструкцию 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
...