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

时间:2018-08-22 17:53:11

标签: python string algorithm pseudocode

我有一个格式为

的400,000个文件名(Excel中为列)的列表。
  

xxx.Number.Date.zzz.txt

我想从字符串中提取数字

通常我会将其设置为该字符串中的第5至第9个字符,但是数字的长度有所不同(2-4位数字),而且我不确定如何设计一种算法来判断数字的长度。

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

我看了前面的问题,但是它并没有真正用我可以使用的方式回答这个问题,因为它似乎正在使用bash函数,或者我听不懂解释:

Extract number of variable length from string

2 个答案:

答案 0 :(得分:3)

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

.*?\.(\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'

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

答案 1 :(得分:3)

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

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

您可以循环编写此代码以遍历Excel列(如果尚未登录,请查看openpyxl)。