python - 不支持编码时如何从 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 表没有用处。
关于如何解决这个问题的任何想法?
谢谢!
解决方案
我发现在 dbf.Table init指定代码页并没有设置正确的代码页。一种解决方法是通过分配手动更改它:
with table:
table.codepage=dbf.CodePage("cp1252")
推荐阅读
- sql - 如何纠正加入问题?
- api - 卷曲呼叫雅虎天气新的api OAuth
- datetime - Apache Nifi 表达式语言 - toDate 格式
- apache-spark - 为什么从 kafka 消费没有在 cloudera 中完成,而是在 hortonworks 中完成?
- sql - 如何执行 SQL 查询以在仅 6 个字符长且以数字 5 开头的字段中查找数字?
- reactjs - 打字稿:在React中的if之后,对象可能是空事件
- python - 使用列列表和多个条件进行索引
- java - 信号 6 (SIGABRT)
- java - 从抓取中删除 HEADERS
- c# - 无法访问 .NET Standard 类库中的 HttpRuntime.Cache