让我尽力解释一下,因为我不是Python向导。我与PyPDF2一起阅读了一份关于墨西哥新冠病毒-19的PDF数据表,并将其标记为长话短说,我试着用tabla做这件事,但没有得到我期望的格式,我打算花更多的时间重新格式化我得到的CSV文档,而不是分析它,并且得到了一个字符串列表,len为16792,这很好
现在,我面临的问题是,我需要以适当的方式对其进行格式化,将一些(不是全部)字符串连接在一起,以便创建一个长度相同的列表列表,即9列
这是目前情况的一个示例,列为病例编号、州、地区、性别、年龄、症状开始日期、状态、传染类型、到达墨西哥的日期:
['1', 'PUEBLA', 'PUEBLA', 'M', '49', '15/03/2020', 'Sospechoso', 'Contacto', 'NA', '2', 'GUERRERO', 'ZONA', 'NORTE', 'M', '29', '15/03/2020', 'Sospechoso', 'Contacto', 'NA', '3', 'BAJA', 'CALIFORNIA', 'TIJUANA', 'F', '34', '14/03/2020', 'Sospechoso', 'Estados', 'Unidos', '08/03/2020', '4', 'CIUDAD', 'DE', 'MÉXICO', 'TLALPAN', 'F', '69', '25/02/2020', 'Sospechoso', 'Italia', '03/03/2020', '5', 'JALISCO', 'CENTRO', 'GUADALAJARA', 'M', '19', '18/03/2020', 'Sospechoso', 'España', '17/03/2020'
我想要的是得到某些字符串,比如'ZONA','NORTE'作为'ZONA NORTE'或'CIUDAD','DE','MEXICO'作为'CIUDAD DE MEXICO'或'ESTADOS','UNIDOS'作为'ESTADOS UNIDOS'
我真的不知道如何解决这个问题。我试过,split(),replace(),试着找到每个频率的索引,阅读所有关于操作列表的问题,试过提供的几乎所有回答。。。但我没能做到
如有任何指导,将不胜感激。对不起,如果这是一个非常基本的问题,但我知道一定有办法,我只是不知道
我假设您要处理的数据来自类似于here的文件,它包含2623行x 8列
您可以使用
tabula-py
从PDF文件加载数据。您可以通过pip install tabula-py==1.3.0
安装它。像这样提取表的一个问题是tabula-py
有时会把事情搞砸。例如,表格的标题是从PDF文件中提取的,如下所示:挺恶心的吧
此外,
tabula-py
无法分隔某些列,即在正确的位置写入逗号,以便能够很好地解析输出CSV文件。例如,带有número de caso(案例编号)8的行:8,BAJA CALIFORNIA,F,65,13/03/2020 Sospechoso Estados Unidos,08/03/2020
可以通过将“Sospechoso”替换为“Sospechoso”来修复和您很幸运,因为这是您目前必须处理的唯一解析问题。因此,遍历输出CSV文件的行并将“Sospechoso”替换为“Sospechoso”,就可以解决所有问题
最后,我添加了一个选项(
removeaccents
),用于从数据中删除重音符号。这可以帮助您避免将来出现编码问题。为此,您需要unicode:pip install unidecode
将所有内容放在一起,读取PDF文件并将其转换为CSV文件并将其作为
pandas
数据帧加载的代码如下(您可以下载预处理的CSV文件here):因为每一行的短语分割是不同的,所以您有一种方法来“识别”它。一种方法是,如果相邻的两个列表项有3个以上的字母,则加入它们
结果:
相关问题 更多 >
编程相关推荐