python - 在Python中结合分割函数和计数出现次数

标签 python string list split

我创建一个列表:

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)时。
我该如何实现这一目标?

最佳答案

您可以使用集合理解来提取唯一类型。然后使用 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

关于python - 在Python中结合分割函数和计数出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315957/

相关文章:

arrays - Python 二维数组获取第一列等于0的所有行

Python Selenium WebDriver - 可以监视 XHR AJAX 调用吗?

python : transform complex list-like string into list (without SyntaxError for mixing bytes and nonbytes literal)

python - 如何从元组中随机选择一个字符串并随机插入文本中的每一行?

python - 我该如何解决这种循环依赖?

java - 使用 Parse LiveQuery (Android) 增量列表?

list - 从 lisp 中的列表中评估函数

java - 用逗号和空格分割输入的字符串

algorithm - 修剪 <= 2 个字符的字符串

c# - FirstUnmatchedIndex 使用 CurrentCultureIgnoreCase