如何使用正则表达式从字符串中提取文件名

4

我对正则表达式很陌生,尝试从一个字符串中提取文件名,该字符串基本上是一个文件路径。


string = "input_new/survey/argentina-attributes.csv"
string_required = argentina-attributes


我知道我可以通过以下代码来实现这个功能。
string.split('/')[2].split('.')[0]

我希望通过使用正则表达式来实现此操作,这样如果将来路径格式发生变化(input_new/survey/path/path/argentina-attributes.csv),也不会影响输出结果。

我知道之前有类似的问题,但我正在寻找适用于我的情况的模式。


这里r'^.*[\\/](.+?)\.[^.]+$'似乎是你想要的。 - Wiktor Stribiżew
我建议您使用pathlib库(在标准库中),它旨在操作路径并且(在我看来)非常方便。一个简单的Path(string).name就可以了。 - Plopp
re.search(r"^.*\/.[^.]+$", "input_new/survey/argentina-attributes.csv").group(0) 'input_new/survey/argentina-attributes.csv' 没有效果
- om tripathi
2个回答

5

试试这个:

>>> import re
>>> string = "input_new/survey/argentina-attributes.csv"

很抱歉,我只能以英文作为回答语言。
>>> re.findall(r'[^\/]+(?=\.)',string) # or re.findall(r'([^\/]+)\.',string)
['argentina-attributes']

参考自这里


1
谢谢,它正在工作。 - om tripathi

2

试试这个:

string = "input_new/survey/argentina-attributes.csv"
new_string = string.split('/')[-1].split('.')[0]
print(new_string)

谢谢,这个可以用,但如何使用正则表达式来实现呢? - om tripathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接