python读取两个csv文件数据,进行查找匹配出现次数
现有需求 表1

表2

需要拿表1中的编码去表2中的门票编码列匹配,统计出现的次数,由于表2编码列是区域间,而且列不是固定的,代码如下
#encoding:utf-8
##导入两个CSV进行比对
import csv
##读取编码
def GetQrCode(filePath):
#定义一个空的list集合
list = set()
csv_file = csv.reader(open(filePath, 'r'))
for item in csv_file:
# 判断字符串是否为纯数字
if (item[0].isdigit()):
##将正常的编码存储到集合
yield item[0] def GetNumberList(filePath):
csv_file = csv.reader(open(filePath, 'r'))
#去掉表头
flag=True
for item in csv_file:
if flag:
# 去掉表头
flag=False
continue
if len(item) > 1:
yield item if __name__ == '__main__':
#定义字典装结果集
dicList={} #获取编码列表
qrcodelist=GetQrCode('E:\\new_qrcode.csv')
#获取要匹配的号段list
numberList=GetNumberList('E:\\门票统计汇总 - 副本.csv')
isBreak=False
for qrcode in qrcodelist: ##最外层全部的qrcode
#print(qrcode)
#注意,这里要讲list转换为列表,否则循环过的元素不会重复进行
numberList=list(numberList)
for numbers in numberList: ##号段里的每一行
if isBreak:
isBreak=False break
numbers=[i for i in numbers if i != '']
numbers=list(numbers)
for number in numbers:
if number!=numbers[0]: #单个号段
if number !='':
#判断一组还是两组
numberLength=len(str(number).split('-'))
if numberLength>1:
#两组的
firstNumber=int(str(number).split('-')[0])
lastNumber=int(str(number).split('-')[1])
#print("first:"+str(firstNumber)+":"+str(lastNumber))
qrcode=int(qrcode) if qrcode>=firstNumber and qrcode<=lastNumber:
if numbers[0] in dicList.keys():
dicList[numbers[0]]=int(dicList[numbers[0]])+1
else:
dicList[numbers[0]] =1
isBreak=True
break
else:
#一组的
#print(str(number))
firstNumber = int(number) if qrcode==firstNumber:
if numbers[0] in dicList.keys():
dicList[numbers[0]]=int(dicList[numbers[0]])+1
else:
dicList[numbers[0]] =1
isBreak = True
break #讲结果集写入csv文件
# 打开文件,追加a
out = open('E:\\resut_1.csv', 'w', newline='') # 设定写入模式
csv_write = csv.writer(out, dialect='excel')
# 写入具体内容
csv_write.writerow(['渠道名称','次数']) for item in dicList:
print(item+":"+str(dicList[item]))
csv_write.writerow([item,str(dicList[item])])
out.close()
导出数据结果:

python读取两个csv文件数据,进行查找匹配出现次数的更多相关文章
- java 两个csv文件数据去重
1.pom.xml配置 <dependency> <groupId>commons-io</groupId> <artifactId>commons-i ...
- python读取和写入csv文件
读取csv文件: def readCsv(): rows=[] with file(r'E:\py\py01\Data\system.csv','rb') as f: reads=csv.reader ...
- python读取并写入csv文件
在ubuntu下,新建.csv文件的方法是使用LibreOffice来创建一个数据表,然后我们把表格存储为.csv的格式: “Save as”菜单把我们的表格存为一个CSV的文件格式:命名为csvDa ...
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- python读取与写入csv,txt格式文件
python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
- C#使用Linq to csv读取.csv文件数据
前言:今日遇到了一个需要读取CSV文件类型的EXCEL文档数据的问题,原本使用NPOI的解决方案直接读取文档数据,最后失败了,主要是文件的类型版本等信息不兼容导致.其他同事有使用linq to csv ...
- C语言进行csv文件数据的读取
C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...
- jmeter参数化、添加变量、生成随机数和导入csv文件数据
Remarks:本次使用jmeter版本为4.0 以下数据都在必应中演示: 添加普通变量 1.添加 User Defined Variables(用户自定义变量) 2.设置变量 3.使用变量 4.查看 ...
随机推荐
- 信号处理——EMD、VMD的一点小思考
作者:桂. 时间:2017-03-06 20:57:22 链接:http://www.cnblogs.com/xingshansi/p/6511916.html 前言 本文为Hilbert变换一篇的 ...
- weichat Small 程序
微信小程序教程用什么语言 ? 答:php java html5 css, 咫尺微页很棒可以自制 html 它是一套自有的语言(暂且叫 WeLang),使用 WeLang 开发出来的页面. 一个微信页 ...
- GoLang基础数据类型--->字符串处理大全
GoLang基础数据类型--->字符串处理大全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入: 高级运维工程师之路 59843264 ...
- 权限管理-ACL
权限管理-ACL 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ACL权限简介与开启 1.ACL权限简介 比如在根下有一个目录(”/yinzhengjie“),这个目录的所有者 ...
- sql server复制数据到excel格式变成字符串
sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...
- Hive记录-部署Hive环境
1.配置 hive1.2.0(前提要配置hadoop2.7.2,前面文档有介绍) #官网下载二进制包,解压到/usr/app 下,配置/etc/profile: export HIVE_HOME=/u ...
- ssm框架结构的搭建
ssm框架结构的搭建
- Linux下安装mysql(示例mysql5.6安装)
1.首先检查你的linux上是否已经安装了mysql rpm -qa|grep mysql 2.如果mysql的版本不是想要的版本.需要把mysql卸载 yum remove mysql mysql- ...
- chart 数据 图表插件
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js">< ...
- offset[Parent/Width/Height/Top/Left] 、 client[Width/Height/Top/Left] 、 Element.getBoundingClientRect()
开篇提示:以下内容都经个人测试,参考API文档总结,但还是不能保证完全正确,若有错误,还请留言指出___________________________________________________ ...