使用Python提取中文字符

#-*- coding: utf-8 -*-

#################################################
#功能:国际化测试,用于提取应用设计包中中文字符,并输出report
#yuebai 20160328
#解压---筛选---整理路径---提取中文---输出报告
#
#################################################
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)
        print("提取完成,结果路径:%s"%reportPath)
        
时间: 2024-08-04 15:08:04

使用Python提取中文字符的相关文章

如何用正则提取中文字符

1.首先得把字符串转成utf-8的格式: $str = iconv(charset, 'utf-8', $str);//charset为你的字符原来的格式,包括:gb2312(简体中文),big5(繁体中文),utf8 2.使用preg_match_all进行提取: preg_match_all('/[\x{4e00}-\x{9fa5}]+/u', $str, $r);中文在utf8中代码是\u4e00-\u9fa5,但是是十六进制,所以转换成\x,这样得到的$r为二维数组,这个preg_mat

python 匹配中文字符

参考: http://hi.baidu.com/nivrrex/blog/item/e6ccaf511d0926888d543071.html http://topic.csdn.net/u/20070404/15/b011aa83-f9b7-43b3-bbff-bfe4f653df03.html 首先,确保所有编码都为 unicode 比如 str.decode('utf8') #从utf8文本中 u"啊l"  #在控制台输出中 (罗嗦下)本想使用参考一定编码 Hex 但郁闷的是 这

python实现中文字符繁体和简体中文转换-乾颐堂

需求:把中文字符串进行繁体和简体中文的转换: 思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的 1.下载zh_wiki.py及langconv zh_wiki.py:https://github.com/skydark/nstools/blob/master/zhtools/zh_wiki.py langconv.py:https://github.com/skydark/nstools/blob/master/zhtools/langconv.py 下载langc

python读取中文字符编码问题

preface:许久没遇到过编码问题,一没注意就被绊倒脚了.. 一.编辑器是以ASICC编码格式的,若想在程序中有中文,需要改为utf-8格式,加入如下代码可破: <span style="font-size:18px;">import sys reload(sys) sys.setdefaultencoding('utf8') </span> 或者参考卤主转载的这篇http://blog.csdn.net/u010454729/article/details/

python 连接数据库-设置oracle ,mysql 中文字符问题

1 import cx_Oracle 2 import MySQLdb 3 4 def conn_oracle(): 5 cnn = cx_Oracle.connect('用户名','密码','ip:端口号/数据库') //用户名,密码,ip端口号数据库 6 cur = cnn.cursor() 7 return cnn,cur 8 9 10 def close_oracle(cnn,cur): 11 cur.close() 12 cnn.close() 13 14 def conn_mysql

python中文字符乱码(GB2312,GBK,GB18030相关的问题)

转自博主 crifan http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ 在玩wordpress的一个博客搬家工具BlogMover,其包含几个python脚本,其中有个是163博客搬家用的163-blog-mover.py,实现抓取网易博客的日志,然后导出xml. 但是其工具现在(2011-12-10)已经失效了.经过自己一点修改后,可以实现获得文章标题了. 用法还是原先的用法:  163-blog-m

【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)

http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [背景] 在玩wordpress的一个博客搬家工具BlogMover,其包含几个python脚本,其中有个是163博客搬家用的163-blog-mover.py,实现抓取网易博客的日志,然后导出xml. 但是其工具现在(2011-12-10)已经失效了.经过自己一点修改后,可以实现获得文章标题了. 用法还是原先的用法:  163-blog-mover.py

Python中文字符问题

Python中对中文字符的操作时常会使程序出现乱码 不全然管用的处理方法: 读取数据时使用encode编码为Bytes以保护数据 使用时转化为string并使用decode解码 如: title = title_origin[0].encode('utf-8') title = str(title.decode('utf-8'))

python数据清洗cvs里面带中文字符

数据清洗,使用python数据清洗cvs里面带中文字符,意图是用字典对应中文字符,即key值是中文字符,value值是index,自增即可:利用字典数据结构没有重复key值的特性,把中文字符映射到了数值index. python代码如下:(data数据时csv格式) import csv dict2 = {}      #Cdict4 = {}      #Edict25 = {}     #zdict26 = {}     #AAdict27 = {}     #ABdict37 = {}