문자열은 변경할 수 없지만 문자열에서 필요한 튜플을 만들 수 없다는 의미는 아닙니다.
이런 식으로 뭔가 작업을해야합니다 :
def file_to_tuple(file):
title_author, searchable, ext = file.rsplit('.', 2)
title, author = title_author.rsplit(' - ', 1)
return (title, author, searchable, ext)
그런 다음 튜플의 목록에 파일 목록을 변환하는 다양한 방법으로 이것을 사용할 수 있습니다
, 여기에 몇 가지 옵션이 :
book_list = map(file_to_tuple, os.listdir('/home/username/Books'))
book_list = [file_to_tuple(f) for f in os.listdir('/home/username/Books')]
: 그것은 예를 들어, 마침표 나 대시를 포함 제목, 또는 기간을 포함 작성자 실패하지 않도록
maxsplit
PARAM와
str.rsplit()
이 사용됩니다
>>> file_to_tuple('Narnia - The Silver Chair - C.S. Lewis.1.pdf')
('Narnia - The Silver Chair', 'C.S. Lewis', '1', 'pdf')
Title 속성에 "-"가 있으면 실패합니다. – multipleinterfaces
@multipleinterfaces : 파싱은 거의 항상 파싱되는 것에 대한 가정을 필요로하며 여기에 가정하는 것은 합리적입니다. – tom10
@ tom10 : 나는 동의하지 않는다 - 대시는 제목에서 충분히 일반적이며 이름에 마침표가있다. 그들은 설명 될 필요가있다. –