python - Python Pandas - 电子邮件列的值带有分隔符
问题描述
所以我的工作中有这个大的.csv,看起来像这样:
Name| Adress| Email| Paid Value
John| x street | John@dmail.com| 0|
Chris| c street | Chris@dmail.com| 100|
Rebecca| y street| RebeccaFML|@dmail.com|177|
Bozo | z street| BozoSMH|@yahow.com|976|
如您所见,.csv 由管道分隔,最后两个人的电子邮件中有管道,导致格式问题。只有 2 位客户遇到此问题,但这些家伙每个月都会有越来越多的条目,我们必须在 csv 中手动找到它们并手动更改电子邮件。这是一个非常无聊且耗时的过程,因为文件很大。
我们使用python来处理数据,我研究了一下,找不到任何可以帮助我的东西,有什么想法吗?
编辑:所以我想要的是一种通过代码自动更改此电子邮件地址的方法(例如 RebeccaFML|@dmail.com -> RebeccaFML@dmail.com)。它不需要是熊猫或任何东西,我接受任何形式的想法。主要的是我只知道在 python 中读取文件后如何替换,但由于这些寄存器中有管道,它们不能正确读取。
提前TY
解决方案
为自定义行创建一个生成器在这里它应该将电子邮件列设置在第三位,但你可以调整它
import pandas
def rows(path: str, sep: str = '|'):
with open(path) as f:
header = [*f.readline().split(sep), None]
for row in f:
row = row.rsplit('\n', 1)[0].split(sep)
if len(row) > len(header):
yield [*row[:2], ''.join((row[2], row[3])), *row[4:]]
else:
yield row
pandas.DataFrame(rows('data.csv'))
推荐阅读
- powershell - 另一个进程正在使用具有并行文件的 Powershell 工作流
- c# - 在实体框架中查询未提交的数据
- elm - 使用“单击”事件处理程序访问属性名称
- discord - 临时禁令命令 discord.js
- c - gst-launch-1.0 显示 YUYV 帧格式的空白屏幕,图像尺寸为 864x480
- javascript - React - 无法读取未定义的属性
- amazon-web-services - 如何将 Amazon S3 存储桶 excel 文件转换为 CSV 文件并将其存储在同一个存储桶中
- reactjs - react中根据角色权限隐藏或显示组件的元素
- swift - 在 Swift 中创建具有不同半径的圆角
- postgresql - Elixir-Phoenix:混合 ecto.create 和混合 phx.server 引发相同的错误,但包含不同的 postgres db 参数