基于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

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java LibGDX:在特定矩形中添加justTouched()   泛型类和通配符的java上界   java从类调用servlet时,我的会话始终为空   java如何为处理其他异常时抛出的异常获取正确的链接堆栈跟踪?   javascript Spring stomp使用SimpMessageTemplate从服务器发送消息   从java到php的查询被某些东西切断了   classpath如何在具有通配符名称的Java jar中发现资源?   java处理崩溃后的事务   java如何通过在Okhttp中传递对象来发出POST请求?   java如何在一个文本字段中显示整个数据库的详细信息   java Android“不幸的是,<app>已经停止。”   错误Java Spring“URL必须以jdbc开头”   MenuItemCompat的java UnsupportedOperationException。setOnActionExpandListener   命名Java队列为什么是“轮询”和“提供”?   java我想得到大写字母表,而不必按大写锁定键和shift键   java如何在JCommander中获取参数的输入顺序?   Javaservlet/JSP Cookie断开连接   多线程Java线程和图形2D