如何提取代码中的中文字符串

前言

在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如json),但是大部分时候我们都是直接写入到代码中,这个时候如果我们想把字符串提取出来就需要一个一个去找,或者通过IDE提供的字符串匹配方法来进行实现。通过IDE搜索的方式固然可以,但是如果我们想把字符串提取出来,则需要一个一个地点击,这样会非常麻烦。下面介绍如何使用代码提取中文字符串。

正则表达式

通过正则表达式可以提取中文字符串

具体的正则表达式为 [\u4e00-\u9fa5]

Python提取中文字符串

直接贴代码:

代码相关内容

Python 版本3.7

IDE Spyder

代码


# -*- coding: utf-8 -*-
import os
import re
list1=[]
def file_name(file_dir):
    for root,dirs,files in os.walk(file_dir):
        getChineseStrings(root,files)
        
def getChineseStrings(root,files):
    for f in files:
        if f.endswith('.js'):
            print(root+f)
            getNoRepeatList(root+f,list1)
            with open(os.path.join(root,f),encoding='UTF-8') as lines:
                for line in lines:
                    line=str(line)
                    #删除//注释的内容
                    line =re.sub(r'//.*$','',line)
                    #删除行内/**/注释的内容
                    line =re.sub(r'/\*.*\*/','',line)
                    #删除行内/*注释以及其右边的内容
                    line =re.sub(r'/\*.*$','',line)
                    #删除行内*/注释以及其左边的内容
                    line =re.sub(r'.*\*/','',line)
                    #删除*以及后面的字符串
                    line =re.sub(r'\*.*$','',line)
                    #查找“”中间的中文字符串
                    findPart(u"\".*[\u4e00-\u9fa5]+.*\"",line)
                    #删除“”中间的中文字符串
                    line =re.sub(u"\".*[\u4e00-\u9fa5]+.*\"",'',line)
                    #查找‘’中间的中文字符串
                    findPart(u"\'.*[\u4e00-\u9fa5]+.*\'",line)
                    #删除‘’中间的中文字符串
                    line =re.sub(u"\'.*[\u4e00-\u9fa5]+.*\'",'',line)
                    #查找><中间的中文字符串 
                    findPart(u">.*[\u4e00-\u9fa5]+.*<",line)
                    
def findPart(regex,text):
    res=re.findall(regex,text)
    for r in res:
        if '\"' in r:
            result = r.split('\"')
            for i in result:
                if re.compile(u'[\u4e00-\u9fa5]').search(i):
                    print (str(i))
                    getNoRepeatList(str(i),list1)
            return 
        if '\'' in r:
            result = r.split('\'')
            for i in result:
                if re.compile(u'[\u4e00-\u9fa5]').search(i):
                    print (str(i))
                    getNoRepeatList(str(i),list1)
            return 
        if '>' in r or '<' in r :
            result =re.split(r">|<", r) 
            for i in result:
                if re.compile(u'[\u4e00-\u9fa5]').search(i):
                    print (str(i))
                    getNoRepeatList(str(i),list1)
            return 
def getNoRepeatList(i,lists):
    if i not in lists:
        lists.append(i)
if __name__=='__main__':
    file_name('paste the path of the files here')
    print("==========================================================================================this is no repeating list")
    for i in list1:
        print(i)
 

代码详解

第一个方法:
file_name
这个方法主要用于遍历文件夹中的文件

第二个方法:
getChineseStrings
这个方法主要用于获得中文字符串,这也是整个代码文件的核心部分,

以JavaScript为例,其注释主要分为三种

第一种注释
//这是注释内容

第二种注释

/*这是注释内容*/

第三种注释

/*
*这是注释内容
 */

为了提取中文字符串,我们首先需要删除注释中的字符串,以//为例
line =re.sub(r'//.*$','',line)
这里直接将每一行中的//后面的字符都替换为'',这样在后面的提取中,就会自动排除掉这些注释中的字符串。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值