从csv文件中读取Python

时间:2011-11-03 22:05:41

标签: python csv

我正在努力解决这个问题。 我正在从csv fiile读取数据,其中包含以下列:

id, name, price

所以我使用以下代码来阅读csv:

import sys
import csv as input

def readFile(path):
    try:
        finput = input.reader(open(path,'rb'),delimiter=',',quotechar='|')
    except IOError as (errno,strerror):
            print "I/O error({0}): {1}".format(errno,strerror)
    except:
            print "Unexpected Error: ",sys.exc_info()[0]
            raise
    # covert format into list
    fmod = list(finput)
    return fmod

但问题是名称字段可以像

name,item_det 既然“,”给我带来麻烦.. 而不是将名称字段作为描述中具有逗号的单个实体来读取.. 它分裂了那个特定的领域。 我该如何解决这个问题。 感谢

2 个答案:

答案 0 :(得分:1)

只需确保包含分隔符char(,)的任何单个值都包含在quotechar(示例中为|)中。因此,只要行中的name字段的格式为<name>, <item_det>,该行就应该显示为... ,|<name>, <item_det>|, ...

答案 1 :(得分:1)

CSV就是这样:“逗号分隔”。您需要引用名称字段:

|name,item_det|

或使用转义字符,但您必须通过设置引号为QUOTE_NONE来启用它:

reader = csv.reader(open(path, "rb"), delimiter=',', quoting=csv.QUOTE_NONE, escapechar="\\")

示例:

name\,item_det

否则,请勿使用csv模块。