python3处理csv文件
1. 基础语句
1.1 文件的读取
如果需要读取一行数据如下表1所示,那么需要读取域名下面的数据,便使用如下代码:
with open('A.csv','rb') as csvfile:
reader = csv.reader(csvfile)
rows = [row for row in reader]
其中每一个row就是一行['121.241.244.92', 'known attacker', '"blocklist.de (+dataplane.org,greensnow.co,rulez.sk,rutgers.edu)"'],对应的row[0]就是121.241.244.92。
那么读取某一列就很容易了,取出每一row里面的第0个元素组成colum,便是下面的语句可以取得第0列 column0 = [row[0] for row in reader] 。
而取得某一行便相对复杂一些,代码如下:
import csv
with open('A.csv','rb') as csvfile:
reader = csv.reader(csvfile)
for i,rows in enumerate(reader):
if i == 2:
row = rows
上面的代码中,运用到了enumerate函数,enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。即对于一个列表中每一个元素添加一个索引。通过索引选取对于的行。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
reader列表
[['121.241.244.92', 'known attacker', '"blocklist.de (+dataplane.org,greensnow.co,rulez.sk,rutgers.edu)"'],
['121.32.150.82', 'known attacker', '"blocklist.de (+dataplane.org,greensnow.co)"'],
['121.33.237.102', 'known attacker', '"blocklist.de (+dataplane.org,greensnow.co,rutgers.edu)"']]
表1
| 域名 | ||
|---|---|---|
| 121.241.244.92 | known attacker | "blocklist.de (+dataplane.org,greensnow.co,rulez.sk,rutgers.edu)" |
| 121.32.150.82 | known attacker | "blocklist.de (+dataplane.org,greensnow.co)" |
| 121.33.237.102 | known attacker | "blocklist.de (+dataplane.org,greensnow.co,rutgers.edu)" |
1.2 文件的写入
文件的写入就相对简单很多,只需记得"a+"是追加写入文件、"W"是覆盖写入即可,直接贴出下面的代码:
with open("test.csv", "a+") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(rows)
2. 在工程中的运用
情景:面对一份上百万的trails.csv文件,如下图所示,现在我需要把第一列的中只含有ip或者是IP:port的那一行读取出来,并且放入新的文件中。

在这就需要使用正则表达式对ip进行匹配,匹配成功输入文件中。匹配IPV4及端口号的正则 \A\d+\.[0-9.]+\Z|\A\d+\.[0-9.]+\:[0-8]+\Z。这里使用到search语句进行匹配,代码如下:
with open("trails.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
for rows in reader:
m = re.search(r"\A\d+\.[0-9.]+\Z|\A\d+\.[0-9.]+\:[0-8]+\Z", rows[0])
if m:
with open("test.csv", "a+") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(rows)
参考文献
[1]风景不在对岸wj.Python 读取csv的某行[EB/OL].https://blog.csdn.net/u011089523/article/details/52372962,2016-08-30.
[2]test_soy.Python 读取csv的某列[EB/OL].https://blog.csdn.net/test_soy/article/details/79718458?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control,2018-03-27.
python3处理csv文件的更多相关文章
- 用python3读csv文件出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
1.python3读取csv文件时报如下图所示的错误 2.分析原因:读取的csv文件不是 UTF8 编码的,而IDE工具默认采用 UTF8 解码.解决方法是修改源文件的解码方式. 3.使用nodepa ...
- python3读写csv文件
python读取CSV文件 python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...
- 用python3读CSV文件,出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid con
使用pd.read_csv()读csv文件时,出现如下错误: UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position ...
- python3写入csv文件时中文为乱码
今天修改李万的爬虫时把页面上的中文写入csv文件时,中文总是乱码.通过上网搜索得到解决.解决的办法是打开文件是需加参数 encoding='utf-8-sig' .感谢博客园的菜鸟Alex.他相关博客 ...
- python3 写CSV文件多一个空行的解决办法
Python文档中有提到: open('eggs.csv', newline='') 也就是说,打开文件的时候多指定一个参数.Python文档中也有这样的示例: import csvwith open ...
- 【学习笔记】python3中csv文件使用
1. reader=csv.reader(f, delimiter=','):按行读取数据,reader为生成器,读取的每行数据为列表格式,可以通过delimiter参数指定分隔符. import c ...
- python3读取csv文件
代码如下 import csv with open('D:\\abc\\userinfo.csv',newline='') as f: reader = csv.reader(f) for row i ...
- python3使用csv模块读写csv文件
python3使用csv模块读写csv文件 读取csv文件: import csv #打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open() ...
- python3 简单实现从csv文件中读取内容,并对内容进行分类统计
新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化import csv #打开文件,用with打开可以不用去特意关闭file了,python ...
随机推荐
- ES5新增数组的方法
ES5新增数组的方法 ES5新增数组常见方法(indexOf/forEach/map/filter/some/every) .indexOf( data , start) 检测数组中是否存在指定数据 ...
- list.add方法参数详解
- java-try catch中return在finally之前 还是之后执行
finally语句在return语句执行之后return返回之前执行的. finally块中的return语句会覆盖try块中的return返回. 如果finally语句中没有return语句覆盖返回 ...
- JavaScript核心 Dom Bom
<div id="time">2020-9-27</div> <script> //文档页面从上往下加载,先有标签才能获取元素对象,script ...
- MySQL全面瓦解4:数据定义-DDL
前言 SQL的语言分类主要包含如下几种: DDL 数据定义语言 create.drop.alter 数据定义语言 create.drop.alter 语句 . DML 数据操纵语言 insert.de ...
- 冷饭新炒:理解断路器CircuitBreaker的原理与实现
前提 笔者之前在查找Sentinel相关资料的时候,偶然中找到了Martin Fowler大神的一篇文章<CircuitBreaker>.于是花了点时间仔细阅读,顺便温习一下断路器Circ ...
- 云计算管理平台之OpenStack Web管理工具dashboard
在上一篇博客中,我们成功的基于两种网络启动虚拟机:这意味着openstack的核心服务都搭建完成,并正常运行着:有关启动虚拟机实例请参考上一篇博客:今天我们来了解下,基于一个web界面图形工具来管理o ...
- 模块导入from collections import Iterator,Iterable失败
1.引入模块报错 from collections import Iterator,Iterable 报错: DeprecationWarning: Using or importing the AB ...
- linux上性能调优常用命令及简介
1.综合命令:nmon.top:topas(aix) d :磁盘相关 c:cpu相关 m:内存相关 2.磁盘 2.1 测试顺序写性能dd if=/dev/zero of=/cdr/test.data ...
- Charles使用part4——修改网络请求
Charles提供了Map功能.Rewrite功能.Breakpoints功能,都可以达到修改服务器返回内容的目的,这三者的差异是: Map功能适合长期的将某些请求重定向到另一个网络地址或本地文件 ...