跳转到主要内容

用于操作DBText风格数据文件的TextBase库

项目描述

textbase

一个用于操作Inmagic/DBText风格数据文件的Python库

将此项目从https://github.com/epoz/textbase迁移到Brill Gitlab空间。

什么是textbase文件?

一个简单的格式,用单个字符分隔数据记录(我们使用的所有文件都在一行中有一个$字符。对于每条记录,字段名是该行上的第一个单词,通常是大写。字段名之后的任何文本是该字段的值。对于字段名的重复值,可以使用分号在连续行上指定。如果字段的文本值非常长需要换行,则从行首开始一个或多个空格。

为什么重新发明轮子?

我们已经有CSV文件、JSON文件或YAML文件,为什么还要创建这个?好吧,我没有发明这个。它实际上是InMagic软件套件中使用的一种格式:http://www.inmagic.com/products/dbtext-library-suite/

自从80年代初以来,我们就使用dbText软件创建了大量数据文件,这在互联网领域已经是很久以前的事情了。这些确切的数据文件至今仍在驱动大量软件,并在过去几年中证明非常有用。把它想象成Markdown与HTML,或者是一个更简单的数据格式,具有超级简单的键:值记录,易于人类阅读。

示例文件

FOO A Foo field
BAR A Baz field with mulitple entries
; Another
; and yet even more
$
FOO This is the FOO field for the next record
BAR Nothing

主功能类是TextBase。它可以使用打开的文件或名为sourcefile的字符串缓冲区进行初始化。sourcefile将被遍历,将内容分割成块。每个块将被解析并添加到内部缓冲区列表中。内部缓冲区包含每个记录的字典。字典中的每个条目都以DBText记录的字段名作为键,条目本身是值列表。

TextBase对象可以用作生成器遍历内容,或者像列表一样索引Textbase对象。

示例用法

import textbase
t = textbase.TextBase(somebuf)

print len(t)

for x in t[10:20]:
    print x.keys()

print t[0]

如果您不希望将记录解析为Python字典,只想以文本块的形式处理记录,请按以下方式初始化

t = textbase.TextBase(somebuf, parse=False)

使用Docker运行

您可以通过运行以下命令自动将目录中的所有.xlsx文件转换为.dmp文件

docker run --rm -ti -v $(pwd):/data registry.gitlab.com/brillpublishers/code/textbase:latest

这将检查当前目录(以及所有子目录)中的.xlsx文件,并将它们转换为具有相同名称的.dmp文件。如果已存在具有该名称的.dmp文件,则跳过。

Excel文件应符合以下约定

  • 第一行包含字段名。字段名在Textbase对象中被转换为大写

  • 第一行必须有一个名为ID的列。所有Textbase记录都必须有一个ID。如果遇到没有ID的数据行,则跳过。

  • 如果没有名为TYPE的列,则Excel文件的名称将自动添加为这些对象的类型。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

TextBase-0.15.tar.gz (4.8 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面