Tôi gặp khó khăn khi lấy mã chính xác để phân tích các chương trong cuốn sách điện tử này và sau đó in 27 chương đó ra tệp văn bản của riêng chúng. Điều xa nhất tôi nhận được là in "CHAPTER-1.txt". Tôi không muốn mã hóa bất cứ thứ gì và không chắc mình hoàn toàn thiếu dấu ở đâu.
infile = open('dracula.txt', 'r')
readlines = infile.readlines()
toc_list = readlines[74:185]
toc_text_lines = []
cho dòng trong toc_list:
nếu len(dòng) > 1:
bị tước_line = line.strip()
toc_text_lines.append(stripped_line)
#print(len(toc_text_lines))
tiêu đề chương = []
cho text_lines trong toc_text_lines:
Split_text_line = text_lines.split()
nếu chia_text_line[-1].isdigit():
chaptitles.append(text_lines)
#print(len(chương))
in(tiêu đề)
infile.close()
import re
với open('dracula.txt') là f:
sách = f.readlines()
trong khi cuốn sách:
dòng = book.pop(0)
nếu "CHAPTER" trong dòng và book.pop(0) == '\n':
cho tiêu đề trong chương_names_list: ['CHƯƠNG I.', 'CHƯƠNG II.',
'CHƯƠNG III.']
với open("{}.txt".format(chapters_names_list), 'w') :
Tôi nghĩ bạn có thể hưởng lợi từ một trình tạo, giả sử một trong những cuốn sách điện tử quá lớn để có thể nhét vào bộ nhớ, bạn sẽ gặp một số vấn đề.
Những gì bạn có thể làm là xây dựng một số loại quy trình xử lý dữ liệu để trước tiên tìm tệp (ebook.txt) trong hệ thống tệp, nhưng hãy nhớ rằng khi đã có tên tệp, chúng tôi sẽ mở nó và tạo từng dòng một và cuối cùng chúng tôi quét từng dòng để tìm "CHƯƠNG I.", "CHƯƠNG II.", v.v.
hệ điều hành nhập khẩu
import re
nhập fnmatch
def find_files(mẫu, đường dẫn):
"""
Tại đây bạn có thể tìm thấy tất cả tên tệp khớp với một mẫu cụ thể
sử dụng mẫu ký tự đại diện shell để tránh mã hóa cứng
mẫu tệp tức là 'dracula.txt'
"""
cho root, thư mục, tập tin trong os.walk(path):
cho tên trong fnmatch.filter(tệp, mẫu):
mang lại os.path.join(root, name)
def file_opener(tên tập tin):
"""
Mở một chuỗi tên tệp cùng một lúc
và đảm bảo đóng tệp sau khi chúng tôi hoàn tất
quét nội dung của nó.
"""
cho tên tệp trong tên tệp:
nếu tên tệp.endswith('.txt'):
f = open(tên tệp, 'rt')
năng suất f
f.close()
def chain_generators(iterators):
"""
Xâu chuỗi một chuỗi các vòng lặp lại với nhau
"""
cho nó trong các vòng lặp:
# Tra cứu lợi nhuận nếu bạn không chắc chắn nó làm gì
mang lại lợi nhuận từ nó
def grep(mẫu, dòng):
"""
Tìm mẫu trong một dòng, ví dụ 'CHƯƠNG I.'
"""
pat = re.compile(mẫu)
cho dòng trong dòng:
nếu pat.search(dòng):
dòng năng suất
# Cách đơn giản để sử dụng các chức năng này cùng nhau
logs = find_files('dracula*', 'Path/to/files')
tập tin = file_opener(log)
dòng = chain_generators(file)
each_line = grep('CHƯƠNG I.', dòng)
để khớp trong each_line:
in (khớp)
Bạn có thể xây dựng dựa trên những triển khai này để thực hiện những gì bạn muốn làm.
Xin vui lòng cho tôi biết nếu điều này giúp ích.
Tôi là một lập trình viên xuất sắc, rất giỏi!