使用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的字 ...
随机推荐
- [译]ASP.NET Core 2.0 系列文章目录
基础篇 [译]ASP.NET Core 2.0 中间件 [译]ASP.NET Core 2.0 带初始参数的中间件 [译]ASP.NET Core 2.0 依赖注入 [译]ASP.NET Core 2 ...
- 技嘉 gigabyte b75m d3v 主板 定时开机无效问题解决
BIOS 里面设置定时开机后发现到点并没有正常启动~~~ 百思不得解.后来发现原来是WIN8系统下的控制面板的关机并非正常关机,而是不保存设置的非正常关机,在开始菜单右键——关闭或注销——关闭计算机 ...
- TIBCO EMS安装部署
创建用户 groupadd -g 800 tibcouseradd -u 801 -g tibco -d /home/tibco/ -s /bin/bash tibco 目前关于sharedatast ...
- 闲聊select和input常用的小插件
前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...
- C#数据类型和SQL数据类型对照
C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致 /// <summary> /// 数据库中与C#中的数 ...
- [转载] ZooKeeper原理及使用
转载自http://www.wuzesheng.com/?p=2609 ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordina ...
- intel服务器cpu命名规则
我们以E3.E5.E7系列进行一个详细解析.首先,Intel E3.E5.E7代表了3个不同档次的至强CPU,至强"E系列"的这种命名方式有些类似桌面上的Core i3,i5,i7 ...
- 1.0-springboot的java配置方式
1.创建User实体类. @Data public class User { private String username; private String password; private Int ...
- select into
IN 子句可用于向另一个数据库中拷贝表: SELECT * INTO Persons IN 'Backup.mdb' FROM Persons
- Python之文件的基本操作
在python中,对文件的基本操作一共有如下四种: 1.打开文件 file_obj = open("文件路径","模式") 常用的打开文件模式有: r:以只读方 ...