如果我有一个类似下面任一文件名的文件:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
我该如何仅获取文件名而不包含扩展名?使用正则表达式是否合适?
在大多数情况下,您不应该使用正则表达式来处理这个问题。
os.path.splitext(filename)[0]
这也将正确处理像.bashrc
这样的文件名,保持整个名称。
basename[:-len(".tar.gz")]
来实现此操作。 - blueyed>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file
如果我必须使用正则表达式来完成这个任务,我会这样做:
s = re.sub(r'\.jpg$', '', s)
os.path.splitext
是您的好帮手:os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
还可以使用字符串切片。
>>> "1.1.1.1.1.jpg"[:-len(".jpg")]
'1.1.1.1.1'