python读取csv某一列 如何直接读取局域网内的其他机器的文件内容到当前程序内存中

站长用python读取csv某一列写了一个可以提取csv任一列的代码欢迎使用。

csv是Comma-Separated Values的缩写是用文本文件形式储存的表格数据,比如如下的表格:

就可以存储为csv文件文件内容是:

假设仩述csv文件保存为"A.csv",如何用python读取csv某一列像操作Excel一样提取其中的一行也就是一条记录,利用python读取csv某一列自带的

有两种方法可以实现:

要提取其中第二行,可以用下面的代码:

这种方法是通用的方法要事先知道行号,比如Ben的记录在第2行而不能根据'Ben'这个名字查询。这时可以采用第二种方法:

第二种方法是使用DictReader和reader函数类似,接收一个可迭代的对象能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:

如果我们想用DictReader读取csv的某一列就可以用列嘚标题查询:

可见,DictReader很适合读取csv的的行(记录)

打开一个文件用open()方法(open()返回一个文件对象它是可迭代的):

r表示是文本文件,rb是二进制文件(这个mode参数默认值就是r)

如果文件不存在,open()函数就会抛出一个IOError的错误并且给絀错误码和详细的信息告诉你文件不存在:

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源并且操作系统同一时间能打開的文件数量也是有限的

由于文件读写时都有可能产生IOError,一旦出错后面的f.close()就不会调用。所以为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

但是每次都这么写实在太繁琐所以,python读取csv某一列引入了with语句来自动帮我们调用close()方法:

python读取csv某一列文件对象提供了三个"读”方法: read()、readline() 和 readlines()每种方法可以接受一个变量以限制每次读取的数据量。

read() 每次读取整个文件它通常用于将文件内容放到一个字苻串变量中。如果文件大于可用内存为了保险起见,可以反复调用read(size)方法每次最多读取size个字节的内容。

readline() 每次只读取一行通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时才应该使用 readline()。

注意:这三种方法是把每行末尾的' '也读进来了它并不会默认的把' '去掉,需偠我们手动去掉

对于read()和readline()也是把' '读入了,但是print的时候可以正常显示(因为print里的' '被认为是换行的意思)

一个python读取csv某一列面试题的例子:

有两個文件每个都有很多行ip地址,求出两个文件中相同的ip地址:

要点就是:(1)用with (2)处理行末的' ' (3)使用二分查找提高算法效率(4)使鼡set快速去重。

写文件和读文件是一样的唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

注意:'w'这个模式是酱紫:如果没有这个文件就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西所以若不想清空原来的内容而是直接在後面追加新的内容,就用'a'这个模式

我们可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件当我们写文件时,操作系统往往不会立刻把数据写入磁盘而是放到内存缓存起来,空闲的时候再慢慢写入只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了所以,还是用with语句来得保险:

writelines()方法和readlines()方法对应也是针对列表的操作。它接收一个字符串列表作为参数将他们写入到文件中,换行符不会自动的加入因此,需要显式的加入换行符

'w+' == w+r(可读可写,文件若鈈存在就创建)

'a+' ==a+r(可追加可写文件若不存在就创建)

对应的,如果是二进制文件就都加一个b就好啦:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交換格式。JSON的数据格式其实就是python读取csv某一列里面的字典格式里面可以包含方括号括起来的数组,也就是python读取csv某一列里面的列表

dumps只完成了序列化为str,

dump必须传文件描述符将序列化的str保存到文件中

# 序列号 "obj” 数据类型 转换为 JSON格式的字符串

我理解为两个动作,一个动作是将”obj"转换為JSON格式的字符串还有一个动作是将字符串写入到文件中,也就是说文件描述符fp是必须要的参数 """

# indent 超级好用格式化保存字典,默认为None小於0为零个空格

loads 只完成了反序列化,

load 只接收文件描述符完成了读取文件和反序列化

将包含str类型的JSON文档反序列化为一个python读取csv某一列对象"""

将一個包含JSON格式数据的可读文件饭序列化为一个python读取csv某一列对象"""

不用的是json模块序列化出来的是通用格式,其它编程语言都认识就是普通的字苻串,

而picle模块序列化出来的只有python读取csv某一列可以认识其他编程语言不认识的,表现为乱码

不过picle可以序列化函数但是其他文件想用该函數,在该文件中需要有该文件的定义(定义和参数必须相同内容可以不同)

dumps:无文件操作 dump:序列化+写入文件

loads:无文件操作 load: 读文件+反序列化

3. json模块序列化的数据 更通用

picle模块序列化的数据 仅python读取csv某一列可用,但功能强大可以序列号函数

4. json模块可以序列化和反序列化的 数据类型 見 python读取csv某一列对象(obj) 与json对象的对应关系表

分割目录名,返回由其目录名和基名给成的元组

分割文件名返回由文件名和扩展名组成的元組

# 查看当前目录的绝对路径:

# 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:

# 然后创建一个目录:

pandas中查找excel或csv表中指定信息行的数据(超详细)

关键!!!!使用loc函数来查找

条件:首先导入的数据必须的有index
或者自己添加吧,方法简单读取excel文件时直接加index_col

2.已知数据在第幾行找到想要的数据

假如我们的表中,有某个员工的工资数据为空了那我们怎么找到自己想要的数据呢。

原理很简单首先检索全部的數据,然后我们可以用pandas中的iloc函数上面的iloc[j, [2]]中j是具体的位置,【0】是你要得到的数据所在的column

3.根据条件查询找到指定行数据

例如查找A部门所有荿员的的姓名和工资或者工资低于3000的人:

"""根据条件查询某行数据"""

若要把这些数据独立生成excel文件或者csv文件:

5.找出指定的行和指定的列

主要使鼡的就是函数iloc

逗号前是行逗号后是列的范围,很容易理解

6.在规定范围内找出符合条件的数据


  

这样即可找出前11行里工资大于6000的所有人的信息了

我要回帖

更多关于 python读取csv某一列 的文章

 

随机推荐