首页 > 解决方案 > 不支持编码时如何从 DBF 文件中删除字段?

问题描述

我有多个 DBF 文件,其中包含名称中带有拉丁字符的字段,例如“Año”。我正在尝试读取表格并将它们导出为 CSV。使用 python 库,我使用了 dbf 库,它在尝试导出到 CSV 时出现问题,或者更改或删除字段名称。

我已经尝试了所有可能的西班牙语编码(代码页)来读取文件。

读取 DBF 文件(这部分有效)

import dbf
table = dbf.Table('C:\\Users\\...\\Desktop\\test.dbf', codepage="cp1252")
print (table)

但是当我尝试以下操作时:

table.delete_fields('año')

即使在打印文件时列出了该字段,我也会收到此错误。

field año not in table -- delete aborted

当我尝试将 DBF 文件导出为 CSV 时,也会发生同样的事情:

dbf.export(table, "junk.csv")

这是我正在使用的库的文档: https ://pythonhosted.org/dbf/dbf-module.html

我尝试过使用 dbfread 库,但是每当它遇到空行时它就会停止,因此对于读取整个 DBF 表没有用处。

关于如何解决这个问题的任何想法?

谢谢!

标签: pythondbf

解决方案


我发现在 dbf.Table init指定代码页并没有设置正确的代码页。一种解决方法是通过分配手动更改它:

with table:
    table.codepage=dbf.CodePage("cp1252")

推荐阅读