从文件标题中提取不同长度数字的算法
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)。
我有一个包含 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)。