如何从文件中获取行并解析它们

时间:2017-02-19 20:01:11

标签: python list csv

我不确定如何以以下方式保存行:Element bb_lst[0]应该是包含列标题的列表:[“Season”, ”Age”, ”Tm”, ……., “PTS”]

继承人的任务:

  

a)编写一个名为get_csv_data()的函数来获取这些函数   参数:

     

f :CSV格式的打开文件对象(类似于我们的   lb-james.csv文件),其中第一行只有列标题,   后跟带有逗号分隔数据项的行

     

string_pos_lst :具有索引位置的列表(从0开始)   对于具有字符串格式的列。对于lb-james.csv文件,这个   列表应该是[0,2,3,4]。假设所有其他列都有   浮动格式。假设此列表未以任何方式排序。

     

sep :表示默认列分隔符的字符串   value“,”函数get_csv_data返回我们在此处调用的嵌套列表   data_lst,如下:

     

•它从文件f中读取第一行(带有列标题)和   向data_lst添加列标题字符串

的列表      

•在第一行之后,它逐行读取文件f并解析每个文件   基于string_pos_lst参数的行。一行中的所有列都是   如果没有明确指出,则假定为浮子   string_pos_lst列表。该函数使用已解析的标记添加列表   (浮点数或/和字符串)到data_lst列表。至少有一条线   解析错误被忽略。例如。试图调用float('')会引发   ValueError异常;我们跳过整行,然后转到下一行。

     

错误处理:检查无效值的参数(例如sep ==空字符串)。这个函数可以抛出/加注   `IndexError和与I / O故障相关的错误。

     

实施例。以下是此功能的使用方法:

bb_file = open(“lb-james.csv”, “r”)

bb_lst = get_csv_data(bb_file, [0, 2, 3, 4], “,”)
     

(为简洁起见,此处省略了错误处理)

     

元素bb_lst[0]应该是包含列标题的列表:

[“Season”,”Age”,”Tm”, ……., “PTS”]
     

元素bb_lst[1]应该是列

的列表
for line 1 data:
 [“2003-04”,19.0,”CLE”,”NBA”,”SG”,79.0,79.0, …….., 1.9,20.9].
     

注意元素的类型:它们是列索引的字符串   列表中给出[0,2,3,4]或其他浮点数。

这是我的代码:

def get_csv_data(f,string_pos_lst,sep):
    for line in f:
        content = [line.strip(sep) for x, line in enumerate(f)]

    for x in range(len(string_pos_lst)):
        print(content[string_pos_lst[x]])

#Test
f = open("lb-james.csv","r")
string_pos_lst = [0,2,3,4]
sep=","
bb_file = open("lb-james.csv", "r")
bb_lst = get_csv_data(bb_file, [0, 2, 3, 4], ",")

输出:

2003-04,19,CLE,NBA,SG,79,79,39.5,7.9,18.9,.417,0.8,2.7,.290,7.1,16.1,.438,.438,4.4,5.8,.754,1.3,4.2,5.5,5.9,1.6,0.7,3.5,1.9,20.9
2005-06,21,CLE,NBA,SF,79,79,42.5,11.1,23.1,.480,1.6,4.8,.335,9.5,18.3,.518,.515,7.6,10.3,.738,0.9,6.1,7.0,6.6,1.6,0.8,3.3,2.3,31.4
2006-07,22,CLE,NBA,SF,78,78,40.9,9.9,20.8,.476,1.3,4.0,.319,8.6,16.8,.513,.507,6.3,9.0,.698,1.1,5.7,6.7,6.0,1.6,0.7,3.2,2.2,27.3

如何解析线条?我想要做的就是逐行读取文件。谢谢!

0 个答案:

没有答案