Django用回车导入CSV

时间:2017-05-24 08:00:36

标签: python django postgresql csv

我正在创建一个Django应用,我需要导入几个*.csv个文件。 这个文件中的一个有这个结构:

id|value (header)

12|¤this is the

value¤

34|¤this is another

value¤

我使用此代码解析文件:

try:
    csvfile = open(path, "r", encoding='utf-16')
except IOError:
    return False
cursor.copy_from(csvfile , tblname, columns=['id', 'value'], sep='|')

但是当我尝试解析这个文件时,它给了我这个错误:

psycopg2.DataError: ERROR:  missing data for the column "value"

有没有办法解析这个文件,在文本标识符('¤')内保留回车符?

2 个答案:

答案 0 :(得分:0)

您可以使用Pythons csv模块来阅读。

import csv

try:
    csvfile = open(path, newline='')
except IOError:
    return False

csvreader = csv.reader(csvfile, delimiter='|', quotechar='¤')
for row in csvreader:
    print(', '.join(row))  # or do something else with the row of data.

答案 1 :(得分:0)

一种方法是自己建立条目,如下所示:

blocks = []
block = []

with open('input.csv') as f_input:
    for row in f_input:
        if '|' in row:
            if len(block):
                blocks.append(''.join(block).strip('\n').split('|'))
                block = []
            block.append(row)
        else:
            block.append(row)

if len(block):
    blocks.append(''.join(block).strip('\n').split('|'))

print(blocks)

这将生成一个块列表,如下所示:

[['id', 'value (header)'], ['12', '¤this is the\nvalue¤'], ['34', '¤this is another\nvalue¤']]