如何验证以某种前缀格式开头的文件?

How to validate a file starts with certain perfix format?

我有一个这样的文件列表。

["TYBN-220422-257172171.txt", "TYBN-120522-257172174.txt", "TYBN-320422-657172171.txt", "TYBN-220622-237172174.txt", "TYBN-FRTRE-FFF.txt",....]

我只想获取格式如下的文件TYBN-220422-257172171.txt

valid = "TYBN-{}-{}".format(numericvalue, numericvalue)我只想要列表中的此类文件

这可能最容易使用正则表达式来匹配所需的格式,即

TYBN-\d+-\d+\.txt$

查找以字符 TYBN- 开头,后跟一位或多位数字 (\d+),一个 -,更多数字,然后以 [=16] 结尾的名称=].

请注意,当使用 re.match 时(如以下代码所示),匹配项会自动锚定到字符串的开头,因此前导 ^(start-of-string 锚点)是正则表达式不需要。

在python中:

import re
filelist = ["TYBN-220422-257172171.txt",
            "TYBN-120522-257172174.txt",
            "TYBN-320422-657172171.txt",
            "TYBN-220622-237172174.txt",
            "TYBN-FRTRE-FFF.txt"
           ]
regex = re.compile(r'TYBN-\d+-\d+\.txt$')
valid = [file for file in filelist if regex.match(file)]

输出:

[
 'TYBN-220422-257172171.txt',
 'TYBN-120522-257172174.txt',
 'TYBN-320422-657172171.txt',
 'TYBN-220622-237172174.txt'
]

试试这个。

lst = ["TYBN-220422-257172171.txt",  "TYBN-120522-257172174.txt", "TYBN-320422-657172171.txt", "TYBN-220622-237172174.txt", "TYBN-FRTRE-FFF.txt"]

valid_format = ['TYBN',True,True] # here true for digits
valid = []

for a in lst:
    l = a.replace('.txt','').split('-')
    if l[0] == valid_format[0]:
        if [i.isdigit() for i in l[1:]] == valid_format[1:]:
                valid.append(a)

print(valid)

输出:

['TYBN-220422-257172171.txt',
 'TYBN-120522-257172174.txt',
 'TYBN-320422-657172171.txt',
 'TYBN-220622-237172174.txt']

正则表达式解释:

  • ^ 字符串的开头
  • $ 字符串结尾
  • \d 匹配所有数字。相当于[0-9]
  • + 一个或多个表达式
import re

files = ["TYBN-220422-257172171.txt", "TYBN-120522-257172174.txt"]

pattern = re.compile("^TYBN-\d+-\d+\.txt$")

for f in files:
    if pattern.match(f):
        print(f + " matched naming convention.")