我正在努力解决这个问题。 我正在从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 既然“,”给我带来麻烦.. 而不是将名称字段作为描述中具有逗号的单个实体来读取.. 它分裂了那个特定的领域。 我该如何解决这个问题。 感谢
答案 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模块。