gpt4 book ai didi

python - 为什么这个正则表达式只捕获最后一位数字?

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:40 26 4
gpt4 key购买 nike

从我的代码中应该很容易看出我正在尝试做什么

for path in glob.glob("orig_data/*.*"):
pattern = ".*(\d+\.).*"
new_name = re.sub(pattern, r'\1txt', path)
copyfile(path, 'orig_data_renamed/'+new_name)

我只想保留“.”之前的数字。文件名,但它没有。

这是一个示例输出

some_folder/asdf321428.txt
8.txt

问题显然出在“+”上,但我不确定它想要什么。

最佳答案

这是一个 re.sub 解决方案,同样使用字符串拆分。我们可以在分隔符 / 上拆分输入路径,然后使用最后一个元素来获取数字。我们再次调用 re.sub 以隔离出现在点之前的数字。

path = "some_folder/asdf321428.txt"
nums = re.sub(r'^.*?(\d+)\.\w+$', '\\1', path.split("/")[-1])
print(nums)

这打印:

321428

如果你只想要文件名,那么试试这个版本:

path = "some_folder/asdf321428.txt"
nums = re.sub(r'^.*?(?=\d+\.\w+$)$', '', path.split("/")[-1])
print(nums)

关于python - 为什么这个正则表达式只捕获最后一位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58830340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com