我使用的CSV文件示例如下:
3256221406917,DESCRIPTION1,"U Bio, U",food
3256223662106,DESCRIPTION2,"U Bio, U",food
我想用comas解析它:
def import_csv(csvfilepath):
data = []
product_file = open(csvfilepath, "r")
reader = csv.reader(product_file, delimiter=',')
for row in reader:
if row: # avoid blank lines
columns = [row[0], row[1], row[2], row[3], row[4]]
data.append(columns)
return data
但是,它在运行时返回"列表索引超出范围"问题。
我相信麻烦可能来自第三栏和第四栏,因为有开头和结尾的双引号。但我不明白为什么delimiter = ','
似乎没有被使用。
你知道为什么吗?谢谢你的帮助!
编辑:
谢谢大家,我只是不确定为什么","是在"之后读的,如果有办法改变它,但删除之前的"似乎更简单!
我相信你可以使用panda来实现这一点:
df = pd.read_csv('your-data.csv')
df_to_list = df.values.tolist()
尝试更换
columns=[行[0],行[1],行[2],行[3],行[4]]具有columns=[行[0],行[1],行[2],行[3]]
因为在您的示例中CSV中只有4列。
我认为你不需要csvreader,我认为如果你想在所有逗号上强制拆分,那么我想你可以尝试这种方法:
def import_csv(csvfilepath):
data = []
with open(csvfilepath, "r") as product_file:
for r in productfile:
row = r.split(",")
if len(r) == 5: # Vary this to change the sensitivity
columns = [row[0], row[1], row[2], row[3], row[4]]
data.append(columns)
return data