如何利用Python分离文件中的英文和中文?
方法一、如果文件中英文和中文不混合,只需要定义一个is_chinese()函数即可,\u4e00表示的是unicode中文编码的第一个,\u9fa5表示的是unicode中文编码的最后一个。
is_chinese(strings)函数的作用是只要字符串中有中文就返回True
文本内容如下: This is a test. 这是一个测试。
def is_chinese(strings):for _char in strings:if '\u4e00' <= _char <= '\u9fa5':return Truewith open('./测试文件', mode="r", encoding="utf-8") as file:for line in file:if not is_chinese(line):print(line)
结果:
This is a test.
这是一个测试。
方法二、如果文件中英文和中文同一行混合,定义split_chinese()函数,判断一行中每一个字符,只要找到中文字符就返回该字符。
然后可以利用find()查找这个字符的索引,就可以用切片分离中英文了。
文本内容如下:
This is a test.,这是一个测试。 This is a test2.,这是一个测试2。
def split_chinese(strings):for _char in strings:if '\u4e00' <= _char <= '\u9fa5':return _charwith open('./测试文件', mode="r", encoding="utf-8") as file:for line in file:_char = split_chinese(line)index = line.find(_char)print("英文: ", line[: index])print("中文: ", line[index:])
结果:
英文: This is a test.,
中文: 这是一个测试。英文: This is a test2.,
中文: 这是一个测试2。
方法三、如果文件是英中文混合,定义一个split_chinese()函数,主要作用是返回分隔字符,根据返回的分隔字符寻找index下标,然后根据下标分隔中文和英文。
is_english(_char)的作用是判断输入的字符是否为字母,是则返回True,否则返回False。
解析:
如果我们要获取文本中的 “这是一个测试”,我们就要获取 “这” 和 “A” 的下标,spllit_chinese()的作用就是获取所有分段文本的下标。
文本内容如下:
This is a test.,这是一个测试,Are you OK?,你还好吗?,I split.,我裂开 This is a test2.,这是一个测试2,Are you OK?2,你还好吗?2,I split.,我裂开2
def is_english(_char):for s in _char:if (u'\u0041' <= s <= u'\u005a') or (u'\u0061' <= s <= u'\u007a'):return Truereturn Falsedef split_chinese(strings):chars = []append = True # 用于判断是否应该返回字符for _char in strings:eg_judge_res = is_english(_char) # 判断_char是否为英文if eg_judge_res:if not append: # 如果_char是英文,并且是遍历中文后第一个英文字符, 保留chars.append(_char)append = Trueif '\u4e00' <= _char <= '\u9fa5':if append: # 如果_char是第一个出现的中文字符(或者是遍历英文后的第一个中文字符), 保留chars.append(_char)append = Falsereturn charswith open('./测试文件', mode="r", encoding="utf-8") as file:copy_file = fileall_index = []for line in file:chars = split_chinese(line)print(chars)index_tmp = [] # 保留前一个indexfor i, _char in enumerate(chars):index = line.find(_char)if not index_tmp: # 第一个print("英文: ", line[:index])if index_tmp:if is_english(_char): # 如果_char是字母字符, 前一个index —— index 这段为中文print("中文: ", line[index_tmp[0]: index])else:print("英文: ", line[index_tmp[0]: index])if i+1 == len(chars):print("中文: ", line[index:]) # 最后一个index_tmp = []index_tmp.append(index)
结果:
['这', 'A', '你', 'I', '我']
英文: This is a test.,
中文: 这是一个测试,
英文: Are you OK?,
中文: 你还好吗?,
英文: I split.,
中文: 我裂开['这', 'A', '你', 'I', '我']
英文: This is a test2.,
中文: 这是一个测试2,
英文: Are you OK?2,
中文: 你还好吗?2,
英文: I split.,
中文: 我裂开2
如何利用Python分离文件中的英文和中文?相关推荐
- java统计string中文数字英文_Java学习(4):统计一个文件中的英文,中文,数字,其他字符以及字符总数...
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...
- python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音
GB18030的字符集标准 http://zbgb5.com/2/StandardDetail479488.htm 缺少包时用pip install 进行安装,例如: pip install xlsx ...
- python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...
- python 文件指定位置写入-Python从文件中读取指定的行以及在文件指定位置写入...
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...
- 利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类
利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类 find ./ -name ".DS_Store" -depth -exec rm {} \; Mac 删除 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python 表格格式输出_利用python对excel中一列的时间数据更改格式操作
问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...
- python文件读取输出-Python 读写文件中数据
1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...
- python代码物理_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python 替换array中的值_利用Python提取视频中的字幕(文字识别)
我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...
最新文章
- linux批量执行命令脚本,2.3-命令批量执行脚本
- Android --- Android Studio 错误: 非法字符: ‘\ufeff’
- 成功解决ConvergenceWarning: lbfgs failed to converge (status=1): STOP: TOTAL NO. of ITERATIONS REACHED L
- http://www.cnblogs.com/Bear-Study-Hard/archive/2008/03/26/1123267.html
- ie浏览器框架不显示_thinkphp框架下后台验证码不显示
- linux+vi+注掉代码,VI编辑器之删除操作(示例代码)
- Java Lock的使用
- geotools 影像切片 缩放
- matlab 生成自回归,Matlab时间序列-AR-自回归.pdf
- vue 富文本存储_vue 富文本编辑器 项目实战用法
- 基于51单片机的7键8键电子琴proteus仿真数码管显示程序原理设计
- Foxmail设置标签
- 看小姐姐用动图展示 10 大 Git 命令
- python 悬浮窗_python浮窗
- Hadoop生态系统功能组件,主要包括哪些?
- Android程序员二本出身、逆袭网易、一路孤独,flutter插件引用第三方库
- 名帖157 王徽之 行楷《新月帖》
- 女朋友问小灰:什么是数据仓库?什么是数据湖?什么是智能湖仓?
- 为什么我发的视频播放量老涨不上去?
- 找实习的一些感悟(图像算法转大数据)——女孩也能干开发