我不确定如何以以下方式保存行: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
如何解析线条?我想要做的就是逐行读取文件。谢谢!