以多种格式解析现实世界的表格数据。

organize的Python项目详细描述


#整理

现实世界的数据很混乱:

1。[imf elibrary data](http://www.imf.org/external/data.htm)对tsv使用`.xls``扩展名,
2。[data.gov]上的文件(https://www.data.gov/)有时包含中断直接解析的前序,
3。如果你一直在使用公共数据源,那么你就有自己的恐怖故事。(如果您的所有数据都来自同事或同事,那么毫无疑问,它的格式总是完美的。)

``organize``旨在使处理真实数据文件的手动清理阶段变得容易:

>1。读取csv、tsv和excel格式,即使它们的标签不正确或缺少文件名。
2.跳过需要手动清理的预编码行。
3.忽略带空格的行或每列为空的行。

名称,行中的列值:
打印列名称,列值

on

``organize``欠[beautifulsoup]一个精神上的债(http://www.crummy.com/software/beautifulsoup/),
它同样提供了对损坏的html的合理抽象,节省了程序员大量的时间和精力。

tps://github.com/lethain/organize)。



\name=organize):


运行测试套件时使用的测试数据集的b
。当您通过"setup.py build install"安装包时,不会安装这些文件。

for development:

cd organize
make env

e



%(name,val)

在正常情况下,提供文件名或mimetype将提高性能
,但不会影响正确性:

(fin,filename=filename,mimetype=mimetype):
对于name,行中的val:
打印%s:%s!%(name,val)


在大多数情况下,传递filename和mimetype都没有好处,
但是对于读取一堆文件的情况,通常尝试
提供尽可能多的信息。

如果
要处理同一个文件两次,则需要执行以下操作:


ek(0)
对于组织(fin)中的行:
打印行



\这意味着默认情况下,您将看到所有列,即使它们未命名或具有重复的名称。

如果您**不想**重复,您可以将行转换为字典
只需在每一行上调用"dict":

n organize(fin):
row_dict=dict(row)
打印row_dict.keys()

如果需要唯一性和排序,则可以使用[collections.ordereddict](https://docs.python.org/2/library/collections.html collections.ordereddict):

reddict

以open('myfile','r')作为fin:
对于organize(fin)中的行:
row_dict=orderedict(row)
print row_dict.keys()




在这种情况下,您将获得每个名称的第一个值。


我的理由是您可能只需要一部分行。
要获取行的子集,我们建议使用python"itertools"模块中的[itertools.islice]
,其中open('myfile','r')作为fin:
ce(organize(fin),5,25):
打印行

请注意,您不会从文档中获取文字行5到25,
而是从文档提取的数据集中获取文字行5到25。
我真的不知道您为什么要这样做。如果您确实有
一个用例,请告诉我们。



ry,组织它们,
,然后将清理后的版本写入另一个目录。



虽然它提供了
许多[加载数据的工具](http://pandas.pydata.org/pandas docs/stable/io.html),
但它没有那么重视处理格式不好的数据。

pen('myfile','r'))


示例文件的格式稍好一点,但表达了相同的想法。



但是,有很多事情它不做。
这些不一定是最后的决定,但代表了我们目前最好的想法。



\


对于tsv,csv,
excel这意味着一个字符串,对于json等更有用的格式,它将是一个
字符串或整数或其他格式。

在库本身中。



首先,也是最重要的:谢谢!

成功的拉取请求将通过PEP8、Pylint和测试,并包括新的任何附加功能(或修复错误)。您可以通过:


cd~/path/to/organize
make env test style

如果无法解决Pylint投诉,可以在您编辑的文件中禁用某些Pylint检查。(例如,当它认为一个给定的属性不存在时,它确实存在,但是由于任何原因它不能正确地运行。)


我们希望继续改进以下两个方面:


1。对于现有格式,文件解析应该尽可能健壮。
2.文件解析应该支持尽可能多的有用格式。

这些行中任何不引入显著复杂性或性能下降的内容都可能被视为一件非常好的事情。




图书馆应该做预期的事情,即使它需要一个黑客
或不充分的启发。
2。处理流,返回流。许多文件都很大,我们不希望
不必要地浪费。不要依赖文件名来识别数据格式。文件通常被错误地标记或根本没有标记。


前面一点

为了排除给定数据集中的前导
行,我们需要在文件开头向前看一点。这意味着,在显式加载之前,我们将读取加载的
文件中的某些行。

从用户的角度来看,这*应该*是透明的,因为我们将重放预先读取的
行,就像在您读取它们时读取它们一样。然而,如果在一些罕见和奇怪的情况下,这种泄漏,我不会感到震惊。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8