我创建了一个网站,每当有人发送表格(例如询问我的工作)时,我都会收到一封电子邮件,因此我尝试自动执行此操作,我已经下载了相关的电子邮件并删除了不相关的数据但是我一直坚持如何导入.txt文件并将其导出到电子表格(.csv文件)这是我试图从中提取数据的.txt文件:
`
Name:
someone
Email:
someone@gmail.com
Site: someone.com
Remote IP: 192.168.0.1
-----------------------------------------------------------------------
Name:
someone51
Email:
someone1@gmail.com
Site: someone1.com
Remote IP: 192.168.0.2
-----------------------------------------------------------------------
Name:
someone
Email:
someone52@gmail.com
Site: someone.com
Remote IP: 192.168.0.5
-----------------------------------------------------------------------
Name:
someone51
Email:
someone52532222@gmail.com
Site: someone1.com
Remote IP: 192.168.0.76
-----------------------------------------------------------------------
Name:
someone123
Email:
someone123@gmail.com
Site: someone.com
Remote IP: 192.168.0.21
-----------------------------------------------------------------------
Name:
someone51
Email:
someone1@gmail.com
Site: someone1.com
Remote IP: 192.168.0.2
-----------------------------------------------------------------------
` 显然,我不得不改变确切的数据,但这也是我得到的布局。
所以我问我如何更改此.txt文件并系统地将其放入电子表格
提前谢谢
答案 0 :(得分:1)
如果我们只是获取文件的一部分,它将更容易使用它:
f = """Name: someone
Email: someone@gmail.com
Site: someone.com
Remote IP: 192.168.0.1"""
因此,假设您知道如何将文件打开到Python中,您应该有一个像上面这样的多行字符串。
现在,如果我们可以安全地说冒号(:
)拆分每行中的两列,那么我们所要做的就是 replace
所有这些使用逗号并将此新字符串输出到文件。就这么简单。
为此,我们不需要迭代字符串,我们可以使用str.replace
方法一次性替换它们:
f = f.replace(":", ",")
然后f
将修改为CSV
格式:
Name, someone
Email, someone@gmail.com
Site, someone.com
Remote IP, 192.168.0.1
现在,剩下要做的就是将这些数据写入以.csv
结尾的文件:
with open("output.csv", "w") as of:
of.write(f)
就是这样!您现在可以在任何output.csv
查看器中打开CSV
,它应该读取文件!
这是我在LibreOffice
打开后的样子截图:
所以它似乎有效!
<强>更新强>
因此,上述解决方案需要解决2
个问题:
要读取文件(转换为变量:f
),有许多教程,所以我不会深入研究。但基本上,只需:
f = open("input.txt").read()
然后,如果我们现在正在处理f
,可能类似于:
Name:
someone
Email:
someone@gmail.com
Site: someone.com
Remote IP: 192.168.0.1
然后我们需要用:\n
替换:
的出现次数以删除溢出的行。我们还需要将\n\n
替换为\n
来删除任何双行。
这些2
操作可以在一行中完成:
f = f.replace(":\n", ":").replace("\n\n", "\n")
然后,我们可以使用与答案开头所述相同的步骤将数据写入CSV
文件。
请注意,在此阶段,您可能需要考虑使用re.sub
,因为这会简化代码!