前言
在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如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)
这里直接将每一行中的//
后面的字符都替换为''
,这样在后面的提取中,就会自动排除掉这些注释中的字符串。