我尝试将一个特定的DBF文件转换为CSV格式,但是我的脚本无法转换特定的值。我使用的是Python中的ydbf包。
我总共有598个DBF文件要转换,其中我标准地使用以下代码:
with ydbf.open(filename, encoding=encoding) as dbf:
for record in dbf:
records[index] = record
index += 1
df = pd.DataFrame.from_dict(records, orient='index')
df.to_csv(filename[:-4] + ".csv", index=False)
对于6个文件有一些错误仍然存在,这6个文件中的5个使用下面的代码解决,但最后一个文件不断返回值错误。我尝试了几种编码方法:拉丁文、cp1250、cp1251、cp1252和ascii,但它们都返回相同的错误:
发生错误(值错误:以10为基数int()的文本无效:B 'RE'),同时阅读记录#0。
我也试过:
dbf = DBF(file)
dataResult = pd.DataFrame(iter(dbf))
但这会返回相同的错误。
我的dbf文件的一个例子:
一个二个一个一个
1条答案
按热度按时间zsohkypk1#
主要问题是dbf表中有一个数字字段,其中包含字符
"RE"
。第二个问题是由于
ydbf
在将记录提供给您之前转换了记录中的值--因此整个try
/except
链都是无用的。一种可能的解决方案是以二进制模式编辑文件,并将
RE
更改为0
。另一个可能的解决方案是使用我的dbf library和一个自定义数值函数来处理无效数据: