使用Python提取中文字符
#功能:国际化测试,用于提取应用设计包中的中文字符,并输出report
#解压---筛选---整理路径---提取中文---输出报告
#################################################################
#author: 陈月白
#_blogs: http://www.cnblogs.com/chenyuebai/
################################################################# #功能:国际化测试,用于提取应用设计包中中文字符,并输出report
#yuebai 20160328
#解压---筛选---整理路径---提取中文---输出报告 #-*- coding: utf-8 -*- import os
import shutil
import sys
import re
import zipfile
import glob workPath = "C:\\users\\yuebai\\Desktop\\国际化测试包"
reportPath = "C:\\users\\yuebai\\Desktop\\国际化输出报告" #定义日志函数
def logInfo(info):
log = open("%s\\run.log"%workPath,"a")
log.write("[Info] %s\n"%info)
log.close() #定义解压文件函数
def extractZip(fileName,extraPath):
f = zipfile.ZipFile(fileName,"r")
f.extractall(extraPath)
f.close()
logInfo("%s文件解压完成"%fileName) #功能函数,找出中文字符
def getChinese(fileFullPath):
isChinese = re.compile("([\u4e00-\u9fa5]+)+?")
f = open(fileFullPath,"r",encoding="UTF-8") #打开待提取文件
f_in = open("%s\\chineseTxt.txt"%reportPath,"a") #打开输出文件 for line in f.readlines():
getStr = isChinese.findall(str(line)) #逐行判断提取中文
if not getStr == []:
f_in.write("发现中文字符(╯' - ')╯︵ ┻━┻ ,文件路径为%s\n"%fileFullPath)
f_in.write("%s\n"%line) f.close()
f_in.close() logInfo("查找完成,输出报告路径:%s"%reportPath) #功能函数,列出路径下所有文件
def listAny(workPath):
if not os.path.exists(workPath):
print("Error,no such dictionary%s,plz check"%workPath)
zipList = os.listdir(workPath)
return zipList #删除非zip类型的包
notZipList = glob.glob("%s\\*[!p]"%workPath)
logInfo("notZipList =%s,prepare to delete"%notZipList)
for i in notZipList:
os.remove(i)
logInfo("删除非zip包完成") #获取zip包列表
zipList = listAny(workPath) #取zip包解压
#print("开始提取")
for zipPackage in zipList:
zipName = os.path.split(zipPackage)[0] #切割获取文件名
extraPath = os.path.join(workPath,zipName) #在当前文件夹下创建和zip包同名文件夹,用以做解压目标路径
os.makedirs(extraPath)
logInfo("构造解压路径完成,extraPath =%s"%extraPath) extraFilePath = os.path.join(workPath,zipPackage) #待解压文件绝对路径 #开始解压zip包,完成后删除源zip文件
extractZip(extraFilePath, extraPath)
os.remove(extraFilePath) #将扩展目录下流程文件汇总至\\plan下
if os.path.exists("%s\\Plans\\Extend"%extraPath):
tmpExtendPath = ("%s\\Plans\\Extend"%extraPath)
tmpPlanPath = ("%s\\Plans"%extraPath) for t in os.listdir(tmpExtendPath):
t_FullPath = ("%s\\%s\\"%(tmpExtendPath,t))
#print("t_FullPath =",t_FullPath)
if os.path.isfile(t_FullPath):
shutil.move(t_FullPath,tmpPlanPath) #调用getChinese,提取中文字符
for y in os.listdir(tmpPlanPath):
y_fullPath = os.path.join(tmpPlanPath,y)
#print(y_fullPath) logInfo("开始检查文件%s,检查结果路径:%s"%(y_fullPath,reportPath))
getChinese(y_fullPath) #剔除注释
f_in = open("%s\\chineseTxt.txt"%reportPath,"r") #全部中文文件
f_comment = open("%s\\comment.txt"%reportPath,"a") #打开待写入注释文件
f_result = open("%s\\result.txt"%reportPath,"a") #结果文件 for line in f_in.readlines():
if re.findall("^//.*",line):
f_comment.write("%s\n"%line)
else:
f_result.write("%s\n"%line) f_in.close()
f_comment.close()
f_result.close() print("提取完成,结果路径:%s"%reportPath)
使用Python提取中文字符的更多相关文章
- python处理中文字符
1.在py文件中使用中文字符 unicode.py文件内容如下所示: # -*- coding:utf-8 -*- str_ch = '我们women' uni_ch = u'我们women' pri ...
- [python]有中文字符程序异常的解决方案
一. 含有中文字符无法运行 在python3中用的是Unicode编码,Unicode号称万国码,可以向所有的编码进行兼容.不会出现这种问题. Python2中使用的是ASCII编码,会出现这种问题. ...
- python 匹配中文字符
参考: http://hi.baidu.com/nivrrex/blog/item/e6ccaf511d0926888d543071.html http://topic.csdn. ...
- python实现中文字符繁体和简体中文转换-乾颐堂
需求:把中文字符串进行繁体和简体中文的转换: 思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的 1.下载zh_wiki.py及langconv zh_wiki.py:ht ...
- Python解决中文字符的问题
from __future__ import unicode_literals print(type("test")) #<type 'unicode'> Chinat ...
- python 连接数据库-设置oracle ,mysql 中文字符问题
import cx_Oracle import MySQLdb def conn_oracle(): cnn = cx_Oracle.connect('用户名','密码','ip:端口号/数据库') ...
- python中文字符乱码(GB2312,GBK,GB18030相关的问题)
转自博主 crifan http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ 在玩wordpress的一个博客搬 ...
- Python中文字符的理解:str()、repr()、print
Python中文字符的理解:str().repr().print 字数1384 阅读4 评论0 喜欢0 都说Python人不把文字编码这块从头到尾.从古至今全研究通透的话是完全玩不转的.我终于深刻的理 ...
- 中文字符 unicode转utf-8函数 python实现
unicode编码范围 00000000-0000007F的字符,用单个字节来表示: 00000080-000007FF的字符用两个字节表示 (中文的编码范围) 00000800-0000FFFF的字 ...
随机推荐
- Pick apples(大范围贪心,小范围完全背包)
Pick apples Time Limit: 1000MS Memory Limit: 165536KB Submit Statistic Discuss Problem Description O ...
- 实现基于lnmp的电子商务网站
今天带给大家的是一个实战项目,主要是让大家了解在我们接到一个项目时,我们该怎样做好这个项目,下面看具体内容: 技术说明 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器 ...
- myeclipse自动保存修改代码
当你修改过代码后,myeclipse往往要你手动的保存代码才能运行这个修改后的代码,要是不保存就会一直运行修改前的代码.只要修改myeclipse中这两项,就可以让它编译运行修改后的代码: Windo ...
- 第十一章 多GPU系统的CUDA C
本章介绍了 显存和零拷贝内存的拷贝与计算对比 #include <stdio.h> #include "cuda_runtime.h" #include "d ...
- Java IO编程全解(三)——伪异步IO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7723174.html 前面讲到:Java IO编程全解(二)--传统的BIO编程 为了解决同步阻塞I/O面临 ...
- MVC架构下,使用NPOI读取.DOCX文档中表格的内容
1.使用NPOI,可以在没有安装office的设备上读wiod.office.2.本文只能读取.docx后缀的文档.3.MVC架构中,上传文件只能使用form表单提交,转到控制器后要依次实现文件上传. ...
- Delphi工程版本号修改工具
自动修改某目录下符合条件的Delphi工程(dproj)版本号, 支持命令行调用支持通配符忽略文件 -p [Path] 在[Path]路径下查询所有dproj文件(可以为空, 默认路径为程序当前路径) ...
- salesforce零基础学习(八十三)analytics:reportChart实现Dashboard(仪表盘)功能效果
项目中经常会用到Report以及Dashboard来分析汇总数据,Dashboard可以指定view as user,如果针对不同的用户需要显示其允许查看的数据,比如 根据role hierarch ...
- [转载] 从Hadoop到Spark的架构实践
转载自http://www.csdn.net/article/2015-06-08/2824889 http://www.zhihu.com/question/26568496 当下,Spark已经在 ...
- [C#源代码]使用SCPI指令对指定通信端口(RS232/USB/GPIB/LAN)的仪器编程
本文为原创文章,源代码为原创代码,如转载/复制,请在网页明显位置标明原文名称.作者及网址,谢谢! 本软件是基于NI-VISA/VISA32(Virtual Instrument Software Ar ...