导出Unihan to Python,Data Package,CSV,JSON and Yaml
unihan-etl的Python项目详细描述
unihan etl-ETL用于unicode的han统一(UNIHAN)数据库的工具 释放。Unihan ETL检索(下载)、提取(解压)并转换 从Unicode网站到平面、表格或结构化的树状数据库 格式。
unihan etl可以通过其API用作python库来检索数据 作为python对象,或者通过CLI检索csv、json或yaml文件。
Unihan版本兼容性(从Unihan ETL v0.10.0开始): 11.0.0 (发布日期:2018-05-08,版本25)。
UNIHAN的数据分散在多个文件中,格式为:
U+3400 kCantonese jau1 U+3400 kDefinition (same as U+4E18 丘) hillock or mound U+3400 kMandarin qiū U+3401 kCantonese tim2 U+3401 kDefinition to lick; to taste, a mat, bamboo bark U+3401 kHanyuPinyin 10019.020:tiàn U+3401 kMandarin tiàn
值的形状和结构因其字段类型而异。 kHanyuPinyin 将Unicode代码点映射到Hànyǔ Dà Zìdiǎn, 其中,10019.020:tiàn表示一个条目。更复杂的是, 更多变化:
U+5EFE kHanyuPinyin 10513.110,10514.010,10514.020:gǒng U+5364 kHanyuPinyin 10093.130:xī,lǔ 74609.020:lǔ,xī
khanyupinyin支持用空格分隔的多个条目。“:” (冒号)将工作中的位置与拼音读数分开。“,” (逗号)分隔多个条目/读数。这只是90人中的一个 数据库中包含的字段。
表格,“平”输出
csv(默认),$ unihan-etl:
char,ucn,kCantonese,kDefinition,kHanyuPinyin,kMandarin 㐀,U+3400,jau1,(same as U+4E18 丘) hillock or mound,,qiū 㐁,U+3401,tim2,"to lick; to taste, a mat, bamboo bark",10019.020:tiàn,tiàn
使用$ unihan-etl-F yaml --no-expand:
-char:㐀kCantonese:jau1kDefinition:(same as U+4E18 丘) hillock or moundkHanyuPinyin:nullkMandarin:qiūucn:U+3400-char:㐁kCantonese:tim2kDefinition:to lick; to taste, a mat, bamboo barkkHanyuPinyin:10019.020:tiànkMandarin:tiànucn:U+3401
使用$ unihan-etl-F json --no-expand:
[{"char":"㐀","ucn":"U+3400","kDefinition":"(same as U+4E18 丘) hillock or mound","kCantonese":"jau1","kHanyuPinyin":null,"kMandarin":"qiū"},{"char":"㐁","ucn":"U+3401","kDefinition":"to lick; to taste, a mat, bamboo bark","kCantonese":"tim2","kHanyuPinyin":"10019.020:tiàn","kMandarin":"tiàn"}]
“结构化”输出
代码点可以打包更多的细节,unihan etl仔细地提取这些值。 以统一的方式。删除空值。
为了实现这一点,unihan etl将导出到json、yaml和python 列表/听写。
为什么不是csv?
不幸的是,csv只适合存储类似于 信息。json和yaml等文件格式接受键值和 分级条目。
json,$ unihan-etl-F json:
[{"char":"㐀","ucn":"U+3400","kDefinition":["(same as U+4E18 丘) hillock or mound"],"kCantonese":["jau1"],"kMandarin":{"zh-Hans":"qiū","zh-Hant":"qiū"}},{"char":"㐁","ucn":"U+3401","kDefinition":["to lick","to taste, a mat, bamboo bark"],"kCantonese":["tim2"],"kHanyuPinyin":[{"locations":[{"volume":1,"page":19,"character":2,"virtual":0}],"readings":["tiàn"]}],"kMandarin":{"zh-Hans":"tiàn","zh-Hant":"tiàn"}}]
山药$ unihan-etl-F yaml:
-char:㐀kCantonese:-jau1kDefinition:-(same as U+4E18 丘) hillock or moundkMandarin:zh-Hans:qiūzh-Hant:qiūucn:U+3400-char:㐁kCantonese:-tim2kDefinition:-to lick-to taste, a mat, bamboo barkkHanyuPinyin:-locations:-character:2page:19virtual:0volume:1readings:-tiànkMandarin:zh-Hans:tiànzh-Hant:tiànucn:U+3401
功能
- 自动从Internet下载Unihan
- 使用UNIHAN’s database design 中描述的规范力求精确
- 通过-F 导出到json、csv和yaml(需要pyyaml)
- 可配置为通过-f 导出特定字段
- 解释由于Unicode内容太多而导致的编码冲突
- 为未来的中日韩(中文,日文, 韩语)数据集
- cjk库cihai的核心组件和依赖关系
- data package支持
- yaml、json和python中多值分隔字段的扩展 词典
- 支持python 2.7,>;=3.5和pypy
如果您遇到问题或有疑问,请create an issue。
用法
unihan-etl通过其命令行参数提供可自定义的生成。
有关如何指定的信息,请参见unihan-etl CLI arguments 列、文件、下载URL和输出目标。
下载并构建您自己的Unihan导出:
$ pip install --user unihan-etl
要输出csv,默认格式:
$ unihan-etl
输出json:
$ unihan-etl -F json
要输出yaml:
$ pip install --user pyyaml $ unihan-etl -F yaml
只输出csv中的kdefinition字段:
$ unihan-etl -f kDefinition
要输出多个字段,请用空格分隔:
$ unihan-etl -f kCantonese kDefinition
要输出到自定义文件:
$ unihan-etl --destination ./exported.csv
输出到自定义文件(模板文件扩展名):
$ unihan-etl --destination ./exported.{ext}
有关高级用法示例,请参见unihan-etl CLI arguments。
代码布局
# cache dir (Unihan.zip is downloaded, contents extracted) {XDG cache dir}/unihan_etl/ # output dir {XDG data dir}/unihan_etl/ unihan.json unihan.csv unihan.yaml # (requires pyyaml) # package dir unihan_etl/ process.py # argparse, download, extract, transform UNIHAN's data constants.py # immutable data vars (field to filename mappings, etc) expansion.py # extracting details baked inside of fields _compat.py # python 2/3 compatibility module util.py # utility / helper functions # test suite tests/*