首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件标题中提取可变长度数的算法

从文件标题中提取可变长度数的算法
EN

Stack Overflow用户
提问于 2018-08-22 17:53:11
回答 2查看 75关注 0票数 1

我有一个400,000个文件名的列表(在excel中列)。

xxx.Number.Date.zzz.txt

我想从字符串中提取数字

通常,我会把它设置为在字符串中取第五个到第九个字符,但是数字的长度是不同的(2-4位数字),我不知道如何设计一个算法来判断这个数字的长度。

如果有人感兴趣的话,可以使用python3,但是我真的需要帮助处理伪代码

我看了前面这个问题,但是它并没有用我能用的术语来回答这个问题,因为它似乎是在使用bash函数,或者我不明白其中的解释:

从字符串中提取可变长度的数目

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-22 17:59:35

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

代码语言:javascript
复制
file = "xxx.4432.Date.zzz.txt"
num = file.split(".")[1]
print(num) # prints 4432

您可以在一个循环中编写它来遍历Excel列(如果还没有,请查看开吡咯 )。

票数 3
EN

Stack Overflow用户

发布于 2018-08-22 17:57:10

您可以使用正则表达式(在大多数语言中都可用):

代码语言:javascript
复制
.*?\.(\d+)\.

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

代码语言:javascript
复制
import re
re.match('.*?\.(\d+)\.', 'xxx.12345.Date.zzz.txt').group(1)
#'12345'

关于regex101的解释。

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

代码语言:javascript
复制
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 as:'12345'

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51972573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档