望着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:
我不知道你指的是什麼碼。看起來你錯過了幾個鏈接。我檢查了http://code.activestate.com/recipes/362715-dbf-reader-and-writer/上的代碼,它似乎將一個dbf(Xbase)格式轉換爲另一個(二進制),而不是從CSV轉換爲DBF。這是正確的代碼? – jpaugh