从各种文件格式生成行数据

rowgenerators的Python项目详细描述


行生成器

应用程序URL

https://travis-ci.org/Metatab/appurl.svg?branch=master

应用程序URL提供URL的结构和操作,其中 一般来说,url指的是不能简单下载的。例如,你可以 希望引用ZIP存档中的CSV文件或Excel中的工作表 文件。与Row Generators结合使用时,应用程序url通常是 用于引用存储在数据存储库中的表格数据。例如:

  • 存储在网络上:http://examples.com/file.csv
  • 在网络上的zip文件中:http://example.com/archive.zip#file.csv
  • excel文件中的工作表:http://example.com/excel.xls#worksheet
  • 压缩存档中Excel文件中的工作表: http://example.com/archive.zip#excel.xls;worksheet
  • 一个api:socrata+http://chhs.data.ca.gov/api/views/tthg-z4mf

安装

$ pip install appurl

文件

请参阅http://row-generators.readthedocs.io/上的文档

开发说明

运行测试

运行python setup.py tests以运行正常的开发测试。您还可以运行tox,它将 尝试用Python 3.4、3.5和3.6运行测试,忽略不存在的解释器。

使用Docker进行开发测试

在开发其他版本的Python时进行测试有点麻烦,因为 要安装替代版本,tox将运行所有测试,而不仅仅是您想要的测试。

解决这个问题的一个方法是在本地安装Docker,然后运行Docker测试容器 在源目录中。这是从appurl/tests中的Makefile自动完成的

$ cd ./docker
$ make build # to create the container image
$ make shell # to run bash the container

现在有一个docker容器,/code目录是appurl源目录。

现在,运行tox来构建tox虚拟环境,然后输入您想要的特定版本 对虚拟环境运行测试并激活。

# tox
# cd .tox/py34
# source bin/activate # Activate the python 3.4 virtual env
# cd ../../
# python setup.py test # Cause test deps to get installed
#
# python -munittest appurl.test.test_basic.BasicTests.test_url_classes  # Run one test

行数据管道

rowpipe库管理面向行的数据转换器。客户机可以创建一个rowprocessor(),它有一个由表和列组成的模式,其中每个列cna都有一个“transform”,描述如何更改列中的数据。

fromrowpipe.tableimportTablefromrowpipe.processorimportRowProcessordefdoubleit(v):returnint(v)*2env={'doubleit':doubleit}t=Table('foobar')t.add_column('id',datatype='int')t.add_column('other_id',datatype='int',transform='^row.a')t.add_column('i1',datatype='int',transform='^row.a;doubleit')t.add_column('f1',datatype='float',transform='^row.b;doubleit')t.add_column('i2',datatype='int',transform='^row.a')t.add_column('f2',datatype='float',transform='^row.b')

在这个表定义中,other_idi2列初始化为输入行中a列的值, 将i1列初始化为输入行a列,然后对该值调用doubleit函数。在最后一步中,所有值都转换为datatype列中指定的类型

然后使用此表定义运行rowprocessor,并使用输入生成器:

classSource(object):headers='a b'.split()def__iter__(self):foriinrange(N):yieldi,2*irp=RowProcessor(Source(),t,env=env)

然后,rp是返回RowProxy对象的生成器,这些对象可以作为整数或按克隆列编号进行索引:

forrowinrp:v1=row['f1']v2=row[3]

rowsprocessor创建并执行python代码文件。

转换可以有几个步骤,用“;”分隔。第一个前缀为“^”,初始化其余转换的值。前缀为''的转换!'在异常情况下执行转换函数可以有变量签名;转换处理器与参数名匹配。有效的参数名是:

  • 划船。输入行的rowproxy对象。允许访问任何输入行值
  • 行号。
  • 刮擦。用于临时存储的dict
  • 错误。用于存储列错误报告的defaultdict(set)。键是列名
  • 累加器。积累价值的格言,如总和
  • 管道未使用
  • 捆绑。未使用
  • 来源。对生成行的输入生成器的引用
  • 五。输入行值
  • 标题。输入行中列的标题。
  • 输入行中列的索引
  • 标题。输出行中列的标题。
  • 输出行中列的索引

……还有很多这份文件很不完整

注释

此回购协议仍包含旧的行管道的代码,位于pipeline.py文件中。这些组件可以组合起来对行执行定义的操作,例如基于谓词跳过行、更改行数、仅返回头或尾等。代码当前未用于测试。

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

推荐PyPI第三方库


热门话题
java连接在一个屏幕上成功下载,在第二个屏幕上用几乎相同的代码获得错误   java调用super。超级的方法,跳过超级。方法   使用Web服务连接到sharepoint 2013的Java应用程序   java我无法正确呈现editText   httpurlconnection如何在java中检查url连接状态   java Spring Security可以为同一用户接受多个密码吗?   java如何在PreparedStatement中使用自动生成的@Id?   java每个数组表示一个位模式   java我不确定如何记录鼠标在某个区域被点击的次数   spring如何解决:java。lang.NoSuchMethodError:javax。坚持不懈实体管理器。createStoredProcedureQuery(Ljava/lang/String;)   java如何为blackberry中listfield项内的不同字段触发事件   安卓使用Proguard混淆java代码   java在grails 2中与多个数据源有一个和一个域关联。十、   java在尝试在单击按钮时返回combobox值时一直出错   java我可以在setter中使用@Resource注释而不是字段吗?   java Eclipse调试步进不工作   java比较相同对象的两个表并选择不同的表