基于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 OpenJDK交叉编译:失败无法生成目标   java使用Hibernate向postgresql表插入json值   Java7中的新Swing JLayer   java从另一个类访问方法和属性,而不实例化它   java右键单击弹出菜单无法聚焦JTextField   java是否可以使用jpa@Query调用Oracle函数   java是打印任何类型的ArrayList元素的通用方法   使用多重映射作为参数的Java   java我有两个字符串,内容相同,但哈希代码不同,因此。equals方法正在重新运行false。请建议如何解决这个问题   java JPA查询元素集合   java如何将数据从请求绑定到现有对象?多步骤形式   java在没有警告的情况下转换泛型类型?   声明Java乘法长和浮点数,结果是哪种数据类型?