[英]Python text extraction from letter - index
我想使用Python從txt文件中提取字母的特定部分。 開頭和結尾用清晰的開頭/結尾表達式(letter_begin / letter_end)標記。 我的問題是,文本的“記錄”需要從letter_begin列表中任何項的第一個出現開始,到letter_end列表中的最后一個項(+3行緩沖區)結束。 我想將輸出文本寫入文件。 這是到目前為止的示例文本和代碼:
sample_text = """Some random text right here
.........
Dear Shareholders: We are pleased to provide this report to our shareholders and fellow shareholders. we thank you for your continued support.
Best regards,
Douglas - Director
Other random text in this lines """
letter_begin = ["dear", "to our shareholders", "fellow shareholders"]
letter_end = ["best regards", "respectfully submitted", "thank you for your continued support"]
with open(filename, 'r', encoding="utf-8") as infile, open(xyz.txt, mode = 'w', encoding="utf-8") as f:
text = infile.read()
lines = text.strip().split("\n")
target_start_idx = None
target_end_idx = None
for index, line in enumerate(lines):
line = line.lower()
if any(beg in line for beg in letter_begin):
target_start_idx = index
continue
if any(end in line for end in letter_end):
target_end_idx = index + 3
break
if target_start_idx is not None:
target = "\n".join(lines[target_start_idx : target_end_idx])
f.write(str(target))
我想要的輸出應該是:
output = "Dear Shareholders: We are pleased to provide this report to our shareholders and fellow shareholders. we thank you for your continued support.
Best regards,
Douglas - Director
"
您的循環為您提供了最后一次出現的開放序列。
您應該將讀取的部分分成兩個循環,如下所示:
with open(filename, 'r', encoding="utf-8") as infile:
text = infile.read()
lines = text.strip().split("\n")
target_start_idx = None
target_end_idx = None
for index, line in enumerate(lines):
line = line.lower()
if any(beg in line for beg in letter_begin):
target_start_idx = index
break
for index, line in enumerate(lines):
if any(end in line for end in letter_end):
target_end_idx = index + 3
continue
這樣,您將在第一次出現打開序列時退出循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.