基于csv文件创建词汇表的包。
z3c.csvvocabular的Python项目详细描述
这个包使用csv提供了一个非常简单的词汇表实现 文件csv文件的优点是它们提供了一个外部点 指定数据,这允许非开发人员调整数据本身。
详细文档
csv词汇
这个包使用csv提供了一个非常简单的词汇表实现 文件csv文件的优点是它们提供了一个外部点 指定数据,这允许非开发人员调整数据本身。
>>> import z3c.csvvocabulary>>> import os.path >>> path = os.path.dirname(z3c.csvvocabulary.__file__)
csv词汇表
csv词汇表实现实际上只是一个创建 有标题的简单词汇。中有一个sample.csv文件 data目录的testing子包,所以让我们创建一个 词汇量:
>>> 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 u'sample-value1'
虽然看起来标题是错误的unicode字符串,但它实际上是 I18N消息:
>>> type(term1.title) <type 'zope.i18nmessageid.message.Message'>>>> term1.title.default u'Title 1'>>> term1.title.domain 'zope'
当然,让“zope”成为 信息。初始化词汇表时可以指定消息工厂:
>>> from zope.i18nmessageid import MessageFactory >>> exampleDomain = MessageFactory(u'example')>>> samples = z3c.csvvocabulary.CSVVocabulary(csvfile, exampleDomain) >>> term1 = samples.getTerm(u'value1') >>> term1.title.domain 'example'
词汇表设计用于处理小数据集,通常在 用户界面。所有术语都是在初始化时创建的,因此 不在csv文件中检测更新或在需要时加载数据。但是作为 我说,这完全没关系。
编码
默认情况下,词汇表要求csv文件是拉丁1编码的。
>>> csvfile = os.path.join(path, 'testing', 'data', 'utf-8.csv') >>> wrongEncoding = z3c.csvvocabulary.CSVVocabulary(csvfile) >>> wrongEncoding.getTerm('ae').title.default u'\xc3\xa4'
如果CSV文件具有不同的编码,则可以显式指定它:
>>> utf8Encoded = z3c.csvvocabulary.CSVVocabulary(csvfile, encoding='utf-8') >>> term = utf8Encoded.getTerm('ae') >>> term.title.default u'\xe4'
csv消息字符串提取
i18nextract.py中有一个简单的函数可以提取所有消息 特定子树中CSV文件的字符串。在这里我们只想 确保函数完成,并从测试包中获取一些虚拟数据 将使用:
>>> basedir = os.path.dirname(z3c.__file__)>>> catalog = z3c.csvvocabulary.csvStrings(path, basedir) >>> pprint(catalog) {u'sample-value1': [('...sample.csv', 1)], u'sample-value2': [('...sample.csv', 2)], u'sample-value3': [('...sample.csv', 3)], u'sample-value4': [('...sample.csv', 4)], u'sample-value5': [('...sample.csv', 5)], u'utf-8-ae': [('...utf-8.csv', 1)], u'utf-8-oe': [('...utf-8.csv', 2)]}
变更历史
2.0.0(2013-02-19)
- 添加Python3.3支持。
- 放弃对Python2.4和2.5的支持。
1.1.0(2010/01/11)
- 现在可以指定csv文件的结束CSVVocabulary(csvfile, encoding='utf-8')[frisi]
1.0.0
- 初始版本