我已经建立了一个联系表单,为每个注册用户发送电子邮件。我的问题更多地涉及到将一些文本数据解析为csv格式。我在邮箱里收到了多个用户的信息,我把这些信息复制到了一个文本文件中。数据如下所示。在
Name: testuser2
Email: testuser2@gmail.com
Cluster Name: o b
Contact No.: 12346971239
Coming: Yes
Name: testuser3
Email: testuser3@gmail.com
Cluster Name: Mediternea
Contact No.: 9121319107
Coming: Yes
Name: testuser4
Email: tuser4@yahoo.com
Cluster Name: Mediterranea
Contact No.: 7892174896
Coming: Yes
Name: tuser5
Email: tuserner5@gmail.com
Cluster Name: River Retreat A
Contact No.: 7583450912
Coming: Yes
Members Participating: 2
Name: Test User
Email: testuser@yahoo.co.in
Cluster Name: RD
Contact No.: 09833123445
Coming: Yes
Members Participating: 2
如图所示,数据包含一些公共字段和一些不存在的字段,我正在寻找如何解析这些数据的解决方案/建议,因此在“名称”标题下,我将收集该列下的名称信息,其他字段的名称信息也类似。对于标题为“会员参与”的数据,我可以选择数字添加到同一标题下的Excel表中,如果用户没有看到这些信息,可以为空。在
您可以使用记录之间的空行来表示记录结束。然后逐行处理输入文件并构造字典列表。最后将字典写入CSV文件。在
此代码尝试自动收集字段名,并将使用与在输入中首次看到唯一键相同的顺序。如果在输出中需要特定的字段顺序,可以通过取消对相应行的注释来完成。在
在示例输入上运行此代码会产生以下结果:
^{pr2}$让我们把问题分解成更小的子问题:
首先,让我们将注册数据块分成不同的元素:
此函数提供每个注册的列表:
^{pr2}$接下来,我们可以将这些子字符串转换为(key,value)对的列表:
dict()
函数可以将(键、值)对的列表转换为字典:我们可以将这些字典传递到一个csv.DictWriter中,以CSV形式写入记录,并为任何丢失的值提供默认值。在
现在,让我们把这些结合起来!在
输出:
下面的程序可以满足您的要求。总体战略:
csv.DictWriter.writerows()
将数据写入CSV文件。在在
相关问题 更多 >
编程相关推荐