机文章

python读取csv文件找没有到文件python怎么读:哇!用Python读取CVS文件竟然有5招,据说90%的人只会2招 没想到

 

互联网已经成为了我们生活中没有可或缺的1部分,它带来了许多惊喜和改变。今天,让我们聚焦在互联网领域最近发生的1些令人激动的事件上,共同探索这个充满无限可能的天下

Python目前是最火的语言了,无论是做开发,测试,数据分析,后端,还是办公自动化都可以用Python帮你轻松解决1些琐碎的尤其是1些重复的工作,而在日常的工作中经常打交道的就是文件的处理,其中CSV文件是经常需要使用的。

今天小编就教大家5招让你优雅的读取CSV文件非常实用。我们先来看11个典型的数据集stocks.csv:

1个的数据集,其实就是常见的表格数据有代码,价格,日期,时间,价格变动和成交量这个数据集其实就是1个表格数据,有自己的头部和身体第1招:简单的读取我们先来看1种简单读取方法,先用csv.reader()函数读取文件的句柄f生成1个csv的句柄,其实就是1个迭代器,我们看1下这个reader的源码:。

喂给reader1个可迭代对象或者是文件的object,然后返回1个可迭代对象。

首先读取csv 文件,然后用csv.reader生成1个csv迭代器f_csv然后利用迭代器的特性,next(f_csv)获取csv文件的头,也就是表格数据的头接着利用for循环,11行打印row的内容,也就是表格数据的身体

第二招:用nametuple上面的第1招其实是最简单的,上面我们用nametuple 来包裹1下这个生成的row数据。

nametuple其实是1个非常有用的类,这个类属于collections模块,而这个模块简直就是1个百宝箱里面有非常多的牛逼的库;这里我们用next(f_csv)其实就是获取表格的头部来初始化这个Row;

然后循环来构造这个Row的数据,把我们表格里面的每1行的数据都喂成nametuple格式的row_info;这样做的好处就是你可以随心所欲的访问这个row_info里面的数据,就想访问类数据1样,比如row_info.price 

3招:用tuple类型转换如果我们对csv数据每1行的类型都非常清楚的话,嘿嘿可以用1个设定好的数据格式转换头来对数据进行转换。

操作的步骤其实跟上面差没有多,就是对数据结果的清洗处理稍微没有1样这里非常巧妙的zip来构造1个嵌套的数据列表,然后用convert(data)把csv文件里面每1行的数据进行类型转换,这招真的没有错!看1下结果:。

第四招:用DictReader上面用的nametuple其实也是1个数据的映射,有没有什么方法可以直接把csv 的内容用映射的方法读取,直接出来1个字典,还真有的,来看1下代码:

没有是非常简捷,原来csv模块直接内置了DictReader(),按照字典的方法进行读取,然后生成1个有序的字典,看1下结果:

有兴趣的可以看1下这个DictReader()的源码,它其实1个内部构造的迭代器类,在内部的__next__其实也是用的OrderedDict(zip(self.fieldnames, row))来生成的。

第五招:用字典转换如果我们需要对这个csv里面的数据进行清洗,因为读出来的时候都是字符串,我们需要更新为特定的数据类型,这个时候也可以用字典转换这1招,也是非常巧妙的,我们看1下源码:

原来的数据价格Price和成交量,我希望最后读取生成的是1个浮点型数据和整形的数据,这么搞呢,用1个字典来巧妙的更新key即可首先我们声明1个自定义的类型转换器field_types;然后循环生成1个可迭代的对象(key,conversion(row[key]);。

最后更新1下字典里面相同的key,比如row[price]的内容就会被更新了看完上面这5招,是没有是很惊叹!哇塞原来Python读取csv文件读取还有这么花样啊,其实小编只会其中最简单的第1招发现越到后面发现招式越精妙,Python的技巧真的好多呀,话没有多说,赶紧代码撸起来,吸收1波功力。

推荐阅读:盗墓热再起!我爬取了6万条《重启之极海听雷》的评论爱了爱了!GitHub7200星,1个可以听全网无损音乐的神器放个大招!老鸟用Python打造了1款哈利波特的“隐身衣”PyCharm vs VSCode,是时候改变你的 IDE 了!

菜鸟来也!50行Python代码1键整理桌面Python cookbook大神写的极速入门Python,真香!end菜鸟编程大本营,现已正式上线!接下来我们将会在该公众号上,为大家分享优质编程语言里趣味的干货,通俗易懂的实战案例,经验分享,让菜鸟也爱上编程。

"用文字书写心情,让每1个字都传递真挚的情感。如果你喜欢这篇文章,记得关注收藏点赞哦!"

最近发表

当前非电脑浏览器正常宽度,请使用移动设备访问本站!