从文件标题中提取不同长度数字的算法

Algorithm to extract number of varying length from title of file

我有一个包含 400,000 个文件名的列表(excel 中的列),格式为

xxx.Number.Date.zzz.txt

我想从字符串中提取数字

通常我只是将它设置为取该字符串中的第 5 到第 9 个字符,但数字的长度各不相同(2 - 4 位数字),我不确定如何设计一种算法来判断字符串的长度号是。

如果有人感兴趣,可以使用 python3,但实际上我只需要伪代码方面的帮助

我查看了上一个问题,但它并没有真正用我可以使用的术语回答问题,因为它似乎在使用 bash 函数,或者我不明白解释:

Extract number of variable length from string

您可以使用正则表达式(适用于大多数语言):

.*?\.(\d+)\.

匹配前两个点之间的数字:

import re
re.match('.*?\.(\d+)\.', 'xxx.12345.Date.zzz.txt').group(1)
#'12345'

关于regex101的解释。


这也可以用纯 Python 完成(很容易翻译成其他语言):

s = 'xxx.12345.Date.zzz.txt'
out = ''
in_num = False
for c in s:
    if in_num:
        if c == '.':
            break
        out += c
    elif c == '.':
        in_num = True

out 作为:'12345'.

请注意,使用第二种方法,我们不会验证第一个句号之间的字符是否为数字。

如果文件的格式始终是xxx.Number.Date.zzz.txt,而我们只关心Number,那么您可以将字符串转换为列表,然后提取该列表的第一个元素。示例:

file = "xxx.4432.Date.zzz.txt"
num = file.split(".")[1]
print(num) # prints 4432

您可以在循环中编写此代码以浏览您的 Excel 列(如果您还没有,请查看 openpyxl)。