鱼C论坛

 找回密码
 立即注册
查看: 3339|回复: 3

如何csv文件分列并存入列表中去

[复制链接]
发表于 2016-5-3 12:05:23 | 显示全部楼层 |阅读模式
2鱼币
各位好, 我想请问一下,如何把一个.csv的文件进行分列,并把其中两列的内容分别写到两个空的列表list1[]及list2[]中去。 分列我已经知道怎么做了 可如何将分列的其中某一列写到列表中去不知道该怎么弄。 我试了一个小的列表可以实现 但是我要处理的列表为500多行时就总是报错了。请各路大侠指导指导哈~~

1. 可执行的代码如下,sample.csv 分列后为三列六行的列表:
import csv

list1=[]
list2=[]
list3=[]

for line in open("d://sample.csv"):
    title, year, director = line.split(",")  

    list1.append(title)
    list2.append(year)
    list3.append(director)
   
print(list1)
print(list2)
print(list3)

2. 当我想处理十一列520行的列表时,此方法就不适用了,总是报错:

Traceback (most recent call last):
  File "D:/try.py", line 7, in <module>
    A,B,C,D,E,F,G,H,I,J,K = line.split(";")
ValueError: too many values to unpack (expected 11)



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-5-3 12:15:38 | 显示全部楼层
这个报错是该文件存在一行数据多于11列, 你try catch看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-5-3 22:19:51 | 显示全部楼层
  1. title, year, director, *others = line.split(",")  
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-5-6 15:48:26 | 显示全部楼层
报错是因为有超出11列的数据。
  1. name_string = 'Sam,Brad,Alex,Cameron,Toby,Gwen,Jenn,Connor'
  2. name1,nanme2,name3=name_string.split(',')
  3. print(name1,name2,name3)
复制代码

这是要报错的,ValueError: too many values to unpack (expected 3)
解决方法
split方法有两个参数,第一个指定了分割的标志,如果不指定,则用空格、制表符或换行符
第二个则指定了最大分割的次数,例如
  1. name_string = 'Sam,Brad,Alex,Cameron,Toby,Gwen,Jenn,Connor'
  2. name1,name2,name3,other=name_string.split(',',maxsplit=3)
  3. print(name1,name2,name3,'\t',other)
复制代码

输出结果是:
Sam Brad Alex    Cameron,Toby,Gwen,Jenn,Connor
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-20 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表