【Python】Python在文本分析中将中文和非中文进行分割

1.问题描述

进行文本分析的时候需要将中文和非中文进行分开处理,下面通过Python将文本中的中文部分提取出来进行需要的处理。



2.问题解决

开发环境:Linux

程序代码如下:split.py

#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf8")

import re                                                        #导入正则表达式模块:re模块

def translate(inputFile, outputFile):
	fin = open(inputFile, 'r')                                   #以读的方式打开输入文件
	fout = open(outputFile, 'w')                                 #以写的方式打开输出文件

	for eachLine in fin:                                         #按行读入文件内容
		line = eachLine.strip().decode('utf-8', 'ignore')        #处理前进行相关的处理,包括转换成Unicode等
		
		p2 = re.compile(ur'[^\u4e00-\u9fa5]')                    #中文的编码范围是:\u4e00到\u9fa5
		
		zh = " ".join(p2.split(line)).strip()                    
		zh = ",".join(zh.split())

		outStr = zh                                              #经过相关处理后得到中文的文本

		fout.write(outStr.strip().encode('utf-8') + '\n')
		
	fin.close()
	fout.close()

if __name__ == '__main__':
	translate(sys.argv[1], sys.argv[2])                          ##通过获得命令行参数获得输入输出文件名来执行,方便


程序完成之后,在Linux命令行输入:python split.py myinput.txt myoutput.txt

就能够执行了。最终的翻译结果都写入到输出文件myoutput.txt中了。



3.注意问题

(1)第16行,中文的编码范围是:\u4e00到\u9fa5,所以该行的[^\u4e00-\u9fa5]表示非中文,也就是根据非中文切分出中文的文本。



希望对大家有所帮助,谢谢。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值