跳转到主要内容

一个基于CSV文件创建词汇表的包。

项目描述

此包提供了一个使用CSV文件实现的简单词汇表实现。CSV文件的优势在于它们提供了一个外部点来指定数据,这允许非开发人员自行调整数据。

详细文档

CSV词汇表

此包提供了一个使用CSV文件实现的简单词汇表实现。CSV文件的优势在于它们提供了一个外部点来指定数据,这允许非开发人员自行调整数据。

>>> import z3c.csvvocabulary
>>> import os.path
>>> path = os.path.dirname(z3c.csvvocabulary.__file__)

CSV词汇表

CSV词汇表实现实际上只是一个创建具有标题术语的简单词汇表的函数。在测试子包的"data"目录中有一个sample.csv文件,所以让我们从这个文件创建一个词汇表。

>>> csvfile = os.path.join(path, 'testing', 'data', 'sample.csv')
>>> samples = z3c.csvvocabulary.CSVVocabulary(csvfile)
>>> samples
<zope.schema.vocabulary.SimpleVocabulary object at ...>
>>> sorted([term.value for term in samples])
['value1', 'value2', 'value3', 'value4', 'value5']

现在让我们看看一个术语

>>> term1 = samples.getTerm('value1')
>>> term1
<zope.schema.vocabulary.SimpleTerm object at ...>

如你所见,词汇表自动添加了值的前缀

>>> term1.value
'value1'
>>> term1.token
'value1'
>>> term1.title
'sample-value1'

虽然看起来标题是错误的Unicode字符串,但实际上它是一个I18n消息

>>> type(term1.title)
<class 'zope.i18nmessageid.message.Message'>
>>> term1.title.default
'Title 1'
>>> term1.title.domain
'zope'

当然,将"zope"作为消息域通常是不合适的。您可以在初始化词汇表时指定消息工厂

>>> from zope.i18nmessageid import MessageFactory
>>> exampleDomain = MessageFactory('example')
>>> samples = z3c.csvvocabulary.CSVVocabulary(csvfile, exampleDomain)
>>> term1 = samples.getTerm('value1')
>>> term1.title.domain
'example'

词汇表设计用于与小型数据集一起工作,通常是用户界面中的选择。所有术语都在初始化时创建,因此词汇表不会检测CSV文件的更新或在需要时加载数据。但正如我所说,这是完全可以接受的。

编码

默认情况下,词汇表期望csv文件采用latin1编码。

>>> csvfile = os.path.join(path, 'testing', 'data', 'utf-8.csv')
>>> wrongEncoding = z3c.csvvocabulary.CSVVocabulary(csvfile)
>>> wrongEncoding.getTerm('ae').title.default
'\xc3\xa4'

如果您的csv文件具有不同的编码,您可以明确指定它

>>> utf8Encoded = z3c.csvvocabulary.CSVVocabulary(csvfile, encoding='utf-8')
>>> term = utf8Encoded.getTerm('ae')
>>> term.title.default
'\xe4'

CSV消息字符串提取

中有一个简单的函数可以从特定子树中的CSV文件中提取所有消息字符串。这里我们只是确保函数完成,并使用测试包中的某些示例数据

>>> basedir = os.path.dirname(path)
>>> catalog = z3c.csvvocabulary.csvStrings(path, basedir)
>>> pprint(catalog)
{'sample-value1': [('...sample.csv', 1)],
 'sample-value2': [('...sample.csv', 2)],
 'sample-value3': [('...sample.csv', 3)],
 'sample-value4': [('...sample.csv', 4)],
 'sample-value5': [('...sample.csv', 5)],
 'utf-8-ae': [('...utf-8.csv', 1)],
 'utf-8-oe': [('...utf-8.csv', 2)]}

变更历史

3.0 (2023-02-07)

  • 添加对Python 3.7、3.8、3.9、3.10、3.11的支持。

  • 停止支持Python 2.6、2.7、3.3。

2.0.0 (2013-02-19)

  • 添加Python 3.3支持。

  • 停止支持Python 2.4和2.5。

1.1.0 (2010/01/11)

  • 现在可以指定csv文件的编码CSVVocabulary(csvfile, encoding='utf-8') [fRiSi]

1.0.0

  • 初始发布

项目详情


下载文件

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

源分布

z3c.csvvocabulary-3.0.tar.gz (8.3 kB 查看哈希值)

上传时间

构建分布

z3c.csvvocabulary-3.0-py3-none-any.whl (9.7 kB 查看哈希值)

上传时间 Python 3

支持者