私はHTMLファイルを解析しており、2つの文字列、つまりSent:
と<br>
タグの間ですべてを一致させたいと考えています。私の正規表現がBeautifulSoupで動作しないのはなぜですか?
私はいくつかの非常によく似た質問を見て、それらの方法のすべてを試してみましたが、おそらく私は初心者であり、
は、ここに私の関連するコードです:
for filename in os.listdir(path): #capture email year, month, day
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
with open(file_path, 'r') as f:
html = f.read()
soup = BeautifulSoup(html, 'html.parser')
a = re.findall(r'Sent:/.+?(?=<br>)/', soup.text)[0]
#a = re.findall(r'Sent:(.*)', soup.text)[0]
print(a)
d = parser.parse(a)
print("year:", d.year)
print("month:", d.month)
print("day:", d.day)
と私はまた私の正規表現のためにこれらを試してみた:a = re.findall(r'Sent:/^(.*?)<br>/', soup.text)[0]
とa = re.findall(r'Sent:/^[^<br>]*/', soup.text)[0]
しかし、私はエラーをlist index out of range
得続ける....しかし、私は削除しても、 [0]
私はprint(a)
の結果として印刷のみ[]
と....ラインd = parser.parse(a)
にエラーAttributeError: 'list' object has no attribute 'read'
を取得ここではHTMLの関連するブロックです:
<b>Sent:</b> Friday, June 14, 2013 12:07 PM<br><b>To:</b> David Leveille<br><b>Subject:</b>
オハイオ州はかなりの意味があります。しかし、今のところ、 'd = parser.parse(a)'と 'print()'ステートメントの下にコメントが残っていますが、それでも 'ValueError:Unknown string format'というエラーで失敗しました。 – theprowler
"parser.parse"の意味を理解できません。 "parser"とは何ですか?私は "dateparser"というモジュールを知っていますが、試してみるためにインストールすることはできません。 –
まあ、私は 'from dateutil import parser'をインポートするように言われました....そのように私はRegExを使って' Sent: 'の後にすべてをキャプチャし、' parser() 'はその後にキャプチャされたものの中の日付を認識してキャプチャします'Sent:' ......しかし、いくつかの電子メールで何が起こっていたのか、特にこれは、\ nという文字がなかったためRegExがうんざりしていたので...私はHTMLに気付いた日付情報の末尾に「
」と書いてありましたので、私はこの質問を投稿しました....そして今、私は基本的に同じ疑問に遭いました。 – theprowler