如何在Python中以From为分隔符提取段落并存入DataFrame不同列
提取邮件内容到DataFrame的实现方案
核心思路
先精准提取所有以From :开头的完整邮件条目,再将这些条目转换为DataFrame的独立列。
具体代码实现
import pandas as pd import re # 原始文本 raw_text = """This email is confidential dont share with others From : user1@email,To: reciver1@email.com, Subject:Test1, ******emailBody*********, Regards,User1. From : user2@email,To: reciver2@email.com, Subject:Test2, ******emailBody*********, Regards,User2. This email is confidential dont share with others""" # 提取所有符合格式的邮件内容:匹配从"From :"开始到"Regards,XXX."结束的完整条目 email_entries = re.findall(r'From : .*?Regards,\w+\.', raw_text, re.DOTALL) # 将提取到的邮件转换为DataFrame的两列 df = pd.DataFrame([email_entries]).T # 自定义列名 df.columns = ['Email_1', 'Email_2'] print(df)
代码说明
- 正则匹配逻辑:
r'From : .*?Regards,\w+\.'确保精准捕获每封邮件的完整内容,re.DOTALL参数允许匹配包含换行的邮件内容(适配多行邮件场景)。 - DataFrame转换:将提取到的邮件列表转为二维数组后转置,直接得到两列结构的DataFrame,无需复杂的拆分拼接。
替代方案(按行处理)
如果每封邮件恰好是单独一行,也可以用更简单的行过滤方式:
# 按行分割文本,过滤出以"From :"开头的行 lines = raw_text.split('\n') email_entries = [line.strip() for line in lines if line.strip().startswith('From :')] # 后续DataFrame转换逻辑同上
内容的提问来源于stack exchange,提问作者srikanth mandava
相关产品推荐
相关产品推荐

