使用Python编写提取日志中的中文的脚本的方法


Posted in Python onApril 30, 2015

由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配,但不是不可以实现,这个以后优化时再说。

需求描述:

一个父目录中存在多个子文件夹,子文件夹下有多个txt形式化的Log日志,要求从所有地方Log日志中找出CardType=9, CardNo=0时的CardID的值,并将其统计存储到一个文本文件中,要求CardID不能够重复。

需求解析:

首先获取所有的Log日志的全路径,根据路径分别加载到将各个Log日志加载到内存中进行提取分析,并将结果存储到给定的文本文件中。

解决方案:

为了尽可能的简洁通用,这里使用配置文件作为输入变量的依据。不多说,上代码:

配置文件如下:

使用Python编写提取日志中的中文的脚本的方法

103文件夹下有两个文件:log1.txt和log2.txt, 内容类似如下:

使用Python编写提取日志中的中文的脚本的方法使用Python编写提取日志中的中文的脚本的方法

Python代码实现如下:

# -*- coding: utf-8 -*-
#!/usr/bin/python
# filename: picktools.py
# codedtime:2015-3-25

import os
import configparser

# 遍历一个目录,输出所有文件名
def itemsbrowse(path):
  for home, dirs, files in os.walk(path):
    for filename in files:
      yield os.path.join(home, filename)

# 给的文件中查找对应的字符串所在行      
def findchars(filename, chars):
  file = open(filename, 'r')
  for eachline in file:
    if eachline.find(chars) >= 0:
      yield eachline
  file.close()

# 添加到指定的文件
def addtofile(filename, mygenerator):
  file = open(filename, 'a')   # 追加方式打开
  for line in mygenerator:
    file.write(line)
  file.close()

# 过滤重复的字符行
def filter(filename):
  mylist = []
  file = open(filename, 'r')
  for eachline in file:
    mylist.append(eachline.strip())
  file.close()
  
  file2 = open(os.path.splitext(filename)[0] + '_filter.txt', 'w')
  for line in list(set(mylist)):
    print(line, file = file2)
    #file2.write(line) 
  file2.close()
  

def excute():
  iniconf = configparser.ConfigParser()
  iniconf.read('config.ini')
  ifile = iniconf.get('setting', 'ifilepath')
  ofile = iniconf.get('setting', 'ofilepath')
  chars = iniconf.get('setting', 'searchstr')
  
  for fullname in itemsbrowse(ifile):
    mygenerator = findchars(fullname, chars)
    addtofile(ofile, mygenerator)
    
  filter(ofile)
      
      
if __name__ == '__main__':
  excute()

输出结果:输出两个文件result.txt 和result_filter.txt

使用Python编写提取日志中的中文的脚本的方法使用Python编写提取日志中的中文的脚本的方法

心得体会:

1、利用Python去处理一些日常的小任务,可以很方便的完成,相比较C/C++来说,这方面生产力高了不少。

2、本文设计对中文字符的处理,所以使用正则表达式不太怎么方便,但不少不可以,后续版本中会添加对正则的支持!

3、由于初学中,所以代码写的不够精炼简洁,后续进行再优化!

Python 相关文章推荐
进一步探究Python中的正则表达式
Apr 28 Python
python中pass语句用法实例分析
Apr 30 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python实现学校管理系统
Jan 11 Python
用python处理MS Word的实例讲解
May 08 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
django框架模板语言使用方法详解
Jul 18 Python
Python 线程池用法简单示例
Oct 02 Python
python如何基于redis实现ip代理池
Jan 17 Python
Python实现简单的俄罗斯方块游戏
Sep 25 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 #Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 #Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 #Python
Python中正则表达式的详细教程
Apr 30 #Python
详解在Python程序中使用Cookie的教程
Apr 30 #Python
处理Python中的URLError异常的方法
Apr 30 #Python
介绍Python的Urllib库的一些高级用法
Apr 30 #Python
You might like
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
React组件生命周期详解
2017/07/03 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
Flask核心机制之上下文源码剖析
2018/12/25 Python
python全栈知识点总结
2019/07/01 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
仓库主管岗位职责
2014/03/02 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
python如何进行基准测试
2021/04/26 Python
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS