前提・実現したいこと
https://teratail.com/questions/284286の質問の続きです。
何度かチャレンジしたのですが、解決できず、再度質問させていただきます。
テキストデータから本文を抜き出そうとしています。
if i i.startswith("From: "+ "Sent: "+ "To: " + "Cc: "+ "Subject: ") :
として、本文を抜き出そうとしましたが、「None」が出てきました。
エラーが出ず、どうしたら良いのか困っております。
アドバイスいただけないでしょうか。
テキストデータ
From: AAAAAAAAAA@aaaaaaaa.com Sent: Friday, July 8, 2025 9:25 PM To: BBBBBBBBBB@bbbbbbb.com Cc: DDDDDDDDDD@ddddddd.com Subject: YYYYYYYYYYY AAAAAAA様 お世話になります。 明日の予定はこのようになります。 どうぞよろしくお願いいたします。 BBBBBBBBB ________________________ From: ABBBBBBBBB@bbbbbbbb.com Sent: Friday, July 8, 2025 9:25 PM To: AAAAAAAAAA@bbbbbbb.com Cc: CCCCCCC@ddddddd.com Subject: Re:YYYYYYYYYYY BBBBBBB様 お世話になります。 明日の予定についてお知らせください。 どうぞよろしくお願い板致します。 AAAAAAAAA ________________________ From: FFFFFFFF@bbbbbbbb.com Sent: Friday, July 8, 2025 9:25 PM To: DDDDDDD@bbbbbbb.com Cc: CCCCCCC@ddddddd.com Subject: Re:Re:YYYYYYYYYYY FFFFFFF様 明日の予定について教えてください。 DDDDDDDDD
発生している問題・エラーメッセージ
エラーは出ないのですが、Pythonのコンソールに「None」が出ます。
Excelの書き出しには何も記載されません。
該当のソースコード
python3.7
1import xlsxwriter 2data = open('C:/Users/XXXXXXXXXXXX/Desktop/テキストデータ.txt',"r",encoding='utf-8') 3 4wb = xlsxwriter.Workbook('C:/Users/XXXXXXXXXXXX/Desktop/out.xlsx') 5ws1 = wb.add_worksheet('sheet') 6 7row_index = 0 8 9for i in data.readlines(): 10 if i.startswith("From: "): 11 From = i[len("From: "):-1] 12 ws1.write(row_index, 0, From) 13 14 if i.startswith("Sent: "): 15 Sent = i[len("Sent: "):-1] 16 ws1.write(row_index, 1, Sent) 17 18 if i.startswith("To: "): 19 To = i[len("To: "):-1] 20 ws1.write(row_index, 2, To) 21 22 if i.startswith("Cc: "): 23 Cc = i[len("Cc: "):-1] 24 ws1.write(row_index, 3, Cc) 25 26 if i.startswith("Subject: "): 27 Subject = i[len("Subject: "):-1] 28 ws1.write(row_index, 4, Subject) 29 30 if i.startswith("From: "+ "Sent: "+ "To: " + "Cc: "+ "Subject: ") : 31 Message = i[len("From: "+ "Sent: "+ "To: " + "Cc: "+ "Subject: "):-1] 32 ws1.write(row_index, 5, Message) 33 34 if i == "\n" and (From or Sent or To or Cc or Subject or Message): 35 print(f"{From}, {Sent}, {To}, {Cc}\n{Subject}\n{Message}") 36 print("--------------------------------------------") 37 From = None 38 Sent = None 39 To = None 40 Cc = None 41 Subject = None 42 Message = None 43 row_index = row_index + 1 44 45wb.close() 46data.close()
試したこと
以下を書いてみましたが、うまくいきませんでした。
from bs4 import BeautifulSoup mojie=[] cur_pos=0 while True : target_tag = '" "' closing_tag = 'From' start_pos = res[cur_pos:].find(target_tag) end_pos = res[cur_pos:].find(closing_tag) if (start_pos == -1) or (end_pos == -1): break mojie.append(res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos]) cur_pos = cur_pos + end_pos + len(closing_tag)
補足情報(FW/ツールのバージョンなど)
Windows10
すみません質問の意味が分かりません
if i.startswith("From: "):
などとしている方はきちんと取得出来ているのでしょうか。
if i i.startswith("From: "+ "Sent: "+ "To: " + "Cc: "+ "Subject: ") :
は仕様にない誤った使い方をしているのでNoneになります
c.f. https://itsakura.com/python-startswith
if i.startswith("From: "):
はい。
if i.startswith("From: "):~if i.startswith("Subject: "):までは取得できています。
それ以降(メールの本文)を抜き出そうとしているのですが、どのようにしたら抜き出すことができるのか、すみません、わからなくて質問させていただきました。申し訳ございません。
では、
if i i.startswith("From: "+ "Sent: "+ "To: " + "Cc: "+ "Subject: ") :
これは何なのでしょうか?
回答1件
あなたの回答
tips
プレビュー