我有一个格式为
的400,000个文件名(Excel中为列)的列表。xxx.Number.Date.zzz.txt
我想从字符串中提取数字
通常我会将其设置为该字符串中的第5至第9个字符,但是数字的长度有所不同(2-4位数字),而且我不确定如何设计一种算法来判断数字的长度。
如果有人感兴趣,请使用python3,但实际上我只需要伪代码方面的帮助
我看了前面的问题,但是它并没有真正用我可以使用的方式回答这个问题,因为它似乎正在使用bash函数,或者我听不懂解释:
答案 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)。