python 数据分析基础一:csv文件处理(1.5)

上一篇文章,简单说了基础python对csv文件的一些最基本的引用于操作。
本篇作者重点放在了判断行中的值匹配某种模式或者正则表达式

筛选csv文件中特定的行

1.利用基础python

判断行中的值属于某一个集合

那么我们依然使用第一篇的csv模板:没有模板的小伙伴,可以去这里下载
传送门
python 数据分析基础一:csv文件处理(1.5)_第1张图片
代码:

#行中的值属于某一集合,基础python 使用基本python 使行中的值属于某个集合
import csv
date_list=['1/20/14']
input_file="supplier_data.csv"
output_file="the_first_csv.csv"
with open(input_file,"r",newline="") as filereader:
    with open(output_file,"w",newline="") as filewriter:
        fileread=csv.reader(filereader)#创建读取对象
        filewrite=csv.writer(filewriter)#创建写入对象
        header=next(fileread)#取表头
        filewrite.writerow(header)#写入表头
        for row_list in fileread:
            a_date=row_list[4]
            if a_date in date_list:
                filewrite.writerow(row_list)

如第一行所示,这段代码的作用是提取出,行中的值属于某个集合的一部分csv文件。

  1. 创建一个"the_first_csv.csv"的csv文件,使用with open的用法打开我们的模板和需要写入的文件(with open…是比较简单的基础python读取文件的方法,这里不做详解)
  2. 接着,我们创建读取对象与写入对象。这里我们利用 csv模块的reader函数与writer函数,非常方便,我们需要注意需要引入该模块,也就是import csv,这两个函数的用法也很简单
    reader函数:readobject=csv.reader(“filename”)
    writer函数: writeobject=csv.writer(“filename”)
  3. 那么接下来我们要着重一点的是,reader函数的返回值
    python 数据分析基础一:csv文件处理(1.5)_第2张图片
    其实第一行的输出,是一个迭代类型,后面的数是十六进制数,我的理解是它的地址,当然不对的大家可以指正,不过暂时这样理解应该可以。我们将它转化为列表输出的话,可以看到reader函数返回的是一个列表的迭代的地址那么我们引用的时候,其实是引用了一系列列表,而这个一系列列表的第一个段列表是表头的属性分类,我们自然是不能用这第一行的属性分类去判断的,所以我们先把第一行列表(也就是第一个迭代对象)写入我们的目标文件中。这时候我们要使用一个函数 csv.next() 函数,我们第一次使用它是返回第一个迭代对象,它的作用其实就是获取下一个对象。详解传送门(菜鸟教程)。
  4. 那么我们先行把第一个对象写入目标文件,继而使用for循环去遍历这个对象。那么先前我们已经说过,啊,它每一个对象都是一个列表,那么我们使用索引来判断是没有任何问题的,我们可以在刚开始的date_list中任意添加时间(用于筛选)
    在这里插入图片描述
    (本人画笔简陋,说出来都是泪)那么索引我们也已经标记出来了,我们要用日期来判断的话,便是索引4。如果符合,我们便使用writerow函数写入目标文件。
    拓展

writerow()函数:写入一行,参量为列表write_object.writerow([list])
writerows()函数:写入多行,参量为一系列列表(list1,list2)

这些内容大概已经足够大家去使用基础python去筛选行内容。

下一篇将讲到使用pandas模块方便处理行匹配问题。

武汉加油

你可能感兴趣的:(python 数据分析基础一:csv文件处理(1.5))