Nếu tôi có một tên tệp như một trong những tên sau:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Làm cách nào để chỉ lấy tên tệp mà không có phần mở rộng? Một regex có thích hợp không?
Nếu tôi có một tên tệp như một trong những tên sau:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Làm cách nào để chỉ lấy tên tệp mà không có phần mở rộng? Một regex có thích hợp không?
Câu trả lời:
Trong hầu hết các trường hợp, bạn không nên sử dụng regex cho việc đó.
os.path.splitext(filename)[0]
Điều này cũng sẽ xử lý một tên tệp giống như .bashrc
chính xác bằng cách giữ nguyên tên.
basename[:-len(".tar.gz")]
cho điều này.
git-1.7.8.tar
. Không có cách nào để đoán chính xác số lượng dấu chấm mà người gọi muốn xóa, vì vậy splitext()
chỉ xóa dấu cuối cùng. Nếu bạn muốn xử lý các trường hợp cạnh như vậy .tar.gz
, bạn sẽ phải làm điều đó bằng tay. Rõ ràng, bạn không thể loại bỏ tất cả các dấu chấm, vì bạn sẽ kết thúc với git-1
.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Nếu tôi phải làm điều này với regex, tôi sẽ làm như thế này:
s = re.sub(r'\.jpg$', '', s)
Bạn có thể sử dụng phương pháp gốc để lấy tên tệp.
Đây là một ví dụ:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file