Nếu tôi có một tên tập tin như một trong những:Get Tên tập tin Nếu không mở rộng bằng Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Làm thế nào tôi có thể nhận được chỉ tên tập tin, mà không cần phần mở rộng? Regex có phù hợp không?
Nếu tôi có một tên tập tin như một trong những:Get Tên tập tin Nếu không mở rộng bằng Python
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Làm thế nào tôi có thể nhận được chỉ tên tập tin, mà không cần phần mở rộng? Regex có phù hợp không?
Trong hầu hết các trường hợp, bạn không nên sử dụng regex cho điều đó.
os.path.splitext(filename)[0]
Điều này cũng sẽ xử lý tên tệp như .bashrc
chính xác bằng cách giữ nguyên tên.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Không cần regex. os.path.splitext
là bạn của bạn:
os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Nếu tôi phải làm điều này với một regex, tôi muốn làm điều đó như thế này:
s = re.sub(r'\.jpg$', '', s)
@nate c: Tôi sửa đổi câu trả lời của tôi trong khi bạn đang viết bình luận của bạn . –
Không hoạt động đúng với "git-1.7.8.tar.gz", nơi nó chỉ xóa ".gz". Tôi sử dụng 'basename [: - len (". Tar.gz ")]' cho điều này. – blueyed
@ blueyed: "Không hoạt động đúng" là vấn đề quan điểm. Tệp * là * một tệp gzip, tên cơ bản là 'git-1.7.8.tar'. Không có cách nào để đoán chính xác có bao nhiêu dấu chấm mà người gọi muốn bỏ đi, do đó, 'splitext()' chỉ là dải cuối cùng. Nếu bạn muốn xử lý các trường hợp cạnh như '.tar.gz', bạn sẽ phải thực hiện nó 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'. –