固定宽度和字符分隔文件的文件编写器/分析器

gocept.recordserialize的Python项目详细描述


gocept.recordserialize发行版

固定宽度和字符分隔文件的文件编写器/分析器。

这个包与Python2.7版本兼容。

固定宽度格式

通过按顺序列出所有字段来定义格式。每个字段都有以下内容 设置:

name:Name of the field (required)
width:Width of the field in characters (required)
fill character:default: Space
alignment:default: align LEFT (that is, pad on the right side)

例如:

>>> from gocept.recordserialize import FixedWidthRecord
>>> class FixedExample(FixedWidthRecord):
...
...    encoding = 'utf-8'
...    lineterminator = '\r\n'
...
...    fields = [
...        ('one', 3, ' ', FixedWidthRecord.LEFT),
...        ('two', 7, '0', FixedWidthRecord.RIGHT),
...    ]

写作

>>> r = FixedExample()
>>> r['one'] = 'foo'
>>> r['two'] = '12'
>>> str(r)
'foo0000012\r\n'

读数

>>> r = FixedExample.parse('bar0000034\r\n')
>>> r['one']
u'bar'
>>> r['two']
u'34'

也可以使用:parse_file,它接受类似文件的对象。

字符分隔格式

通过在类上声明属性来定义格式每个字段都有 以下设置:

position:position of the field
default:default value to write if none is given
maximum length:truncate field to this length

注意,您不必声明所有字段,任何未声明的位置都是 填充空列。因为这个原因,你总是要给出 fields属性中的字段数:

>>> from gocept.recordserialize import SeparatedRecord
>>> class PipeExample(SeparatedRecord):
...
...    fields = 5
...    encoding = 'utf-8'
...    separator = '|'
...    lineterminator = '\r\n'
...
...    first = 1
...    default = 2, 'qux'
...    maxlen = 3, 3
...    maxlen_default = 4, 5, 'asdfg'

写作

>>> r = PipeExample()
>>> r['first'] = 'some text'
>>> r['maxlen'] = '12345'
>>> str(r)
'some text|qux|123|asdfg|\r\n'

读数

>>> r = PipeExample.parse('some text|qux|123|asdfg|\r\n')
>>> r['first']
u'some text'
>>> r['default']
u'qux'
>>> r['maxlen']
u'123'
>>> r['maxlen_default']
u'asdfg'

也可以使用:parse_file,它接受类似文件的对象。

转义

对于子类化,separatedrecord提供类方法escapeunescape,每个值在写入/读取时传递。一个例子 使用这个是gocept.recordserialize.CSVRecord,它转义引号:

>>> from gocept.recordserialize import CSVRecord
>>> class CSVExample(CSVRecord):
...
...     fields = 1
...     one = 1

>>> r = CSVExample()
>>> r['one'] = 'my "quoted" string'
>>> str(r)
'"my \'quoted\' string"\r\n'

gocept.recordserialize的更改日志

1.0(2017-12-06)

  • 添加对setuptools=32的支持。
  • 放弃对Python2.6的支持。

0.3(2016-02-29)

  • 错误时转义unicode字符

0.2(2013-11-26)

  • 修复了对setuptools的依赖性。

0.1(2012-09-19)

初次发行

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

推荐PyPI第三方库


热门话题
java连接usb到uart设备到安卓设备>3.1   可以强制Php中的web应用程序与Java中的桌面应用程序一起工作吗?   java为什么自定义系统类加载器不工作?   数组在Java中解析具有多个分隔符的字符串   PMD Java 8德米特定律   JavaSpringMVC表单验证不适用于嵌套的复杂类型   让Eclipse Java组织导入以使用Google checkstyle   java Appium:无法创建新会话   java如何在数组中声明新字段   java如何解决“无法初始化类org.apache.cassandra.config.DatabaseDescriptor”?   java AsyncTask创建socket   java向@CreatedBy添加更多信息   如何在ubuntu中运行包含大量jars依赖项的java文件   java如何使用<s:select>标记并在中休眠来填充下拉列表?   java获取错误:找不到符号变量“level”和“next_level_button”   javaweb应用中基于UI的ajax显示代码流   Java长到MySql   java JvisualVM:奇怪的应用程序行为   ubuntu将Java程序的输出结果保存到一个文件中