背景
公司项目的广告展示率太低,需要查找原因,之前做了统计埋点,运维给出过滤后的数据,一个 txt 文件 500M 以上,文件打开非常乱。
在这里还是提醒下,很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此我建了个python学习资源圈里面有最新学习资料,如果你想学或者正在学python,可以关注我,后台私信我 ‘p’ 免费获取!还有老司机解答哦
代码
询问运维是否有工具转换,回复说没有,然后想到之前重学 Python3 的初衷,就是为了能写一些脚本方便处理一些事情。
这个数据主要是 HTTP 的 GET 请求,需要转码,然后把参数拿到,目标是写到 Execl 文件中。
因为一直没用,语法也记不清楚,只能不停回看笔记,关于 Execl 这块也没用过,临时网上查找。
读文件
由于原文件太大,所以先复制了一部分存入当前目录的 test.txt 文件中。
import osfile = open('./test.txt') # 打开文件for line in file: # 按行遍历文件 ... file.close() # 最后要关闭
遍历每一行数据后,转码,分割,转成字典结构
import urllib.parse
# 定义个方法将一行数据转成字典def getOneDict(line):
params = dict()
# 创建字典保存数据
pre = 'timeAnalysis?'
index = line.find(pre)
# 找到这个位置,后面的数据是需要的参数
if index > -1:
line = line[index+len(pre):].split()[0]
# 先截子串然后选空格之前的
line = urllib.parse.unquote(line)
# 网上搜到的用于将 HTTP 编码后的文字解码
paramList = line.split('&')
# 得到类似 s=android 的内若
for item in paramList:
param = item.split('=')
if (len(param) > 1):
# 如果等于号后面有值
params[param[0]] = param[1]
# 字典加个数据
return params
创建 Execl 文件
有了每一