在python中使用gmail api从电子邮件中提取表

2024-05-17 01:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从电子邮件中提取表格,在电子邮件客户端中查看邮件时显示表格

这是电子邮件快照

enter image description here

我想处理表,但在python代码中找不到获取它的方法

这里是原始数据的提取

decoded_data = base64.b64decode(data)

正在显示 b'a d g\r\nb e h\r\nc f j\r\na d\r\nb e h\r\nc f j\r\n\r\nBest Regards,\r\nVikrant Pawar\r\n'

而汤给人的感觉是

soup = BeautifulSoup(decoded_data, "lxml")

它表明

<html><body><p>a d g
b e h
c f j
a d
b e h
c f j

Best Regards,
Vikrant Pawar
</p></body></html>

有没有一种方法可以让我获得可以导入到熊猫中的表格数据


Tags: 方法客户端data电子邮件html邮件body快照
1条回答
网友
1楼 · 发布于 2024-05-17 01:35:58

您可以从中拆分数据和表格列表:

from bs4 import BeautifulSoup
import pandas as pd

text = """
<html><body><p>a d g
b e h
c f j
a d
b e h
c f j

Best Regards,
Vikrant Pawar
</p></body></html>
"""

soup = BeautifulSoup(text, 'lxml')
data = soup.p.text
list_of_tables = data.split('\n')
# -> ['a d g', 'b e h', 'c f j', 'a d', 'b e h', 'c f j', '', 'Best Regards,', 'Vikrant Pawar', '']

请注意,如果有额外的\r\n,则应按data.split('\n\r')分割。现在你可以得到你需要的组成一个df的部分。比如说,你只想在“致以最良好的祝愿”之前得到一部分。要做到这一点,我们首先需要对列表进行切片,然后拆分每个元素以形成:

list_of_tables = [each.split() for each in list_of_tables[:6]]
# -> [['a', 'd', 'g'], ['b', 'e', 'h'], ['c', 'f', 'j'], ['a', 'd'], ['b', 'e', 'h'], ['c', 'f', 'j']]

现在我们需要做的就是形成数据框架:

df = pd.DataFrame(list_of_tables)

最终结果如下所示:

   0  1     2
0  a  d     g
1  b  e     h
2  c  f     j
3  a  d  None
4  b  e     h
5  c  f     j

相关问题 更多 >