我有一个400,000个文件名的列表(在excel中列)。
xxx.Number.Date.zzz.txt
我想从字符串中提取数字
通常,我会把它设置为在字符串中取第五个到第九个字符,但是数字的长度是不同的(2-4位数字),我不知道如何设计一个算法来判断这个数字的长度。
如果有人感兴趣的话,可以使用python3,但是我真的需要帮助处理伪代码
我看了前面这个问题,但是它并没有用我能用的术语来回答这个问题,因为它似乎是在使用bash函数,或者我不明白其中的解释:
发布于 2018-08-22 17:59:35
如果文件的格式总是xxx.Number.Date.zzz.txt,而且我们只关心Number,那么您可以将字符串转换为列表,然后提取该列表的第一个元素。示例:
file = "xxx.4432.Date.zzz.txt"
num = file.split(".")[1]
print(num) # prints 4432您可以在一个循环中编写它来遍历Excel列(如果还没有,请查看开吡咯 )。
发布于 2018-08-22 17:57:10
您可以使用正则表达式(在大多数语言中都可用):
.*?\.(\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 as:'12345'。
注意,使用第二种方法,我们不会验证第一个句号之间的字符是数字。
https://stackoverflow.com/questions/51972573
复制相似问题