方法一、如果文件中英文和中文不混合,只需要定义一个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分离文件中的英文和中文?相关推荐

  1. java统计string中文数字英文_Java学习(4):统计一个文件中的英文,中文,数字,其他字符以及字符总数...

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

  2. python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音

    GB18030的字符集标准 http://zbgb5.com/2/StandardDetail479488.htm 缺少包时用pip install 进行安装,例如: pip install xlsx ...

  3. python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...

    Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...

  4. python 文件指定位置写入-Python从文件中读取指定的行以及在文件指定位置写入...

    Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...

  5. 利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类

    利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类 find ./ -name ".DS_Store" -depth -exec rm {} \;  Mac 删除 ...

  6. python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  7. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  8. python文件读取输出-Python 读写文件中数据

    1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...

  9. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  10. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

最新文章

  1. linux批量执行命令脚本,2.3-命令批量执行脚本
  2. Android --- Android Studio 错误: 非法字符: ‘\ufeff’
  3. 成功解决ConvergenceWarning: lbfgs failed to converge (status=1): STOP: TOTAL NO. of ITERATIONS REACHED L
  4. http://www.cnblogs.com/Bear-Study-Hard/archive/2008/03/26/1123267.html
  5. ie浏览器框架不显示_thinkphp框架下后台验证码不显示
  6. linux+vi+注掉代码,VI编辑器之删除操作(示例代码)
  7. Java Lock的使用
  8. geotools 影像切片 缩放
  9. matlab 生成自回归,Matlab时间序列-AR-自回归.pdf
  10. vue 富文本存储_vue 富文本编辑器 项目实战用法
  11. 基于51单片机的7键8键电子琴proteus仿真数码管显示程序原理设计
  12. Foxmail设置标签
  13. 看小姐姐用动图展示 10 大 Git 命令
  14. python 悬浮窗_python浮窗
  15. Hadoop生态系统功能组件,主要包括哪些?
  16. Android程序员二本出身、逆袭网易、一路孤独,flutter插件引用第三方库
  17. 名帖157 王徽之 行楷《新月帖》
  18. 女朋友问小灰:什么是数据仓库?什么是数据湖?什么是智能湖仓?
  19. 为什么我发的视频播放量老涨不上去?
  20. 找实习的一些感悟(图像算法转大数据)——女孩也能干开发

热门文章

  1. python 快速排名发包_SEO优化快速排名-发包技术
  2. 做课题与科研项目常用的研究方法
  3. 通俗理解动态库与静态库区别
  4. Win10如何使用Win7自带的照片查看器
  5. 中科视拓上榜2019人脸识别技术公司排行TOP 10
  6. attempting to load a 64-bit
  7. 【电磁】Matlab模拟电机内电磁场的分布附GUI界面
  8. java继承序列化_Java中具有继承的对象序列化
  9. SpringBoot整合腾讯云COS
  10. 谷歌浏览器,如何不用翻墙,下载插件?