用于操作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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | fc853db3358b4a0eefeeef203887298f0467580c70e96185f266b3a449791efc |
|
MD5 | f25ca8cf35108c57f1762387b3076c57 |
|
BLAKE2b-256 | 590601ad7b7674252a1ce55360b828c9593b32b20d184955358453b983672b73 |