繁体   English   中英

将csv文件转换为dbf

[英]convert csv file to dbf

我有很多csv文件,并希望将它们转换为dbf文件。 我找到了Ethan Furman的代码(见下文)它非常好用 - 非常感谢 - 但是我的csv文件的分隔符是分号。 所以使用代码python将我的所有数据放入一列,但我有5列。 我该如何更改分隔符?

链接: 使用Python将.csv文件转换为.dbf?

特别:

使用dbf包,您可以获得一个基本的csv文件,其代码类似于:

 import dbf some_table = dbf.from_csv(csvfile='/path/to/file.csv', to_disk=True) 

这将创建具有相同名称和字符或备注字段以及字段名称f0,f1,f2等的表。

对于不同的文件名,请使用filename参数,如果您知道字段名称,也可以使用field_names参数。

 some_table = dbf.from_csv(csvfile='data.csv', filename='mytable', field_names='name age birth'.split()) 

这里提供相当基础的文档。

查看dbf代码,我没有看到任何传递方言的方法,因此您可以按如下方式转换文件:

import csv
reader = csv.reader(open('input.csv'), delimiter=';')
writer = csv.writer(open('output.csv', 'w'))
for row in reader:
    writer.writerow(row)

注意:这将正确引用已包含逗号作为其内容一部分的行。

编辑:如果您愿意修补dbf.from_csv接受delimiter作为参数以避免转换所有csv文件,这应该工作:

--- dbf.py.orig 2012-01-23 12:48:32.112101218 +0100
+++ dbf.py  2012-01-23 12:49:59.468534408 +0100
@@ -4502,13 +4502,14 @@
         print str(table[0])
     finally:
         table.close()
-def from_csv(csvfile, to_disk=False, filename=None, field_names=None, extra_fields=None, dbf_type='db3', memo_size=64, min_field_size=1):
+def from_csv(csvfile, to_disk=False, filename=None, field_names=None, extra_fields=None, dbf_type='db3', memo_size=64, min_field_size=1,
+             delimiter=','):
     """creates a Character table from a csv file
     to_disk will create a table with the same name
     filename will be used if provided
     field_names default to f0, f1, f2, etc, unless specified (list)
     extra_fields can be used to add additional fields -- should be normal field specifiers (list)"""
-    reader = csv.reader(open(csvfile))
+    reader = csv.reader(open(csvfile), delimiter=delimiter)
     if field_names:
         field_names = ['%s M' % fn for fn in field_names]
     else:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM