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.查看 ...
随机推荐
- 目标检测网络之 R-FCN
R-FCN 原理 R-FCN作者指出在图片分类网络中具有平移不变性(translation invariance),而目标在图片中的位置也并不影响分类结果;但是检测网络对目标的位置比较敏感.因此Fas ...
- Python练习1
一.linux,基于文件大小,创建时间,修改时间,文件内容,文件名称等进行查找汇总和输出 2019-01-04 只操作文本文件 #!/usr/bin/env python # -*- coding: ...
- scrapy xpath、正则表达式、css选择器
scrapy xpath XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力. 学习 ...
- GBDT用于分类问题
一.简介 GBDT在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩.原因大概有几个 一:效果确实挺不错. 二:既可以用于分类 ...
- 修改Linux Operating System的时间与时区
修改Linux Operating System的时间与时区 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 有的小伙伴可能会遇到安装了linux系统后,尽管时区选择正确,也会发现系 ...
- myeclipse 怎么安装与激活
摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三 ...
- 1、JDBC-Connection
新建Maven工程 pom.xml <dependencies> <dependency> <groupId>mysql</groupId> <a ...
- UESTC - 1167 一句话题意
---恢复内容开始--- 题目链接:https://vjudge.net/problem/UESTC-1167 请问从n*n的正方形左下角走到右上角且不越过对角线的情况总数模m的结果~ 分析: 还记得 ...
- JavaScript中的number跟string
遇到问题困扰很久,因为这看起来木有问题,都是对的啊,殊不知是因为参数需要一个数字类型,但是数据却悄悄变成了字符类型.在群里求救无果最后自己找到了原因. 为什么我箭头里放数字可以正常显示,放temp[i ...
- FastReport"Text"对象中的HTML标签介绍以及使用
"Text"对象可以理解一些简单的HTML标签.标签可位于对象中的文本.在默认情况下,标签是禁用的,要启用这些HTML标签,可选择对象上下文菜单中的“Allow HTML tags ...