当前位置: 首页 > news >正文

Python查找文件中包含中文的行

前言

近几天在做多语言版本的时候再次发现,区分各种语言真的是一件比较困难的事情,上一次做中文提取工具的就花了不少时间,这次决定用python试一试,结果写起来发现真是方便不少,自己整理了一下方便以后查找使用。

代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# find the line of containing chinese in files

__author__ = 'AlbertS'

import re

def start_find_chinese():
    find_count = 0;
    with open('ko_untranslated.txt', 'wb') as outfile:
        with open('source_ko.txt', 'rb') as infile:
            while True:
                content = infile.readline()
                if re.match(r'(.*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*)', content.decode('utf-8')):
                    outfile.write(content)
                    find_count += 1;

                if not content:
                    return find_count

# start to find
if __name__ == '__main__':
    count = start_find_chinese()
    print("find complete! count =", count)

原始文件

source_ko.txt文件内容

3   캐릭터 Lv.50 달성
8   캐릭터 Lv.80 달성
10  캐릭터 Lv.90 달성
...
...
2840    飞黄腾达
4841    同归于尽
8848    캐릭터 Lv.50 달

运行效果(ko_untranslated.txt文件)

2840    飞黄腾达
4841    同归于尽

总结

  1. 其实这段小小的代码中包含了两个常用的功能,那就是读写文件和正则表达式。
  2. 这也是两个重要的知识点,其中with操作可能防止资源泄漏,操作起来更加方便。
  3. 正则表达式可是一个文字处理的利器,代码中的正则可能还不太完善,后续我会继续补充更新。

相关文章:

  • sscanf类似于正则表达式的进阶用法
  • mysql函数扩展之UDF开发
  • Python实现一个简单的图片爬虫
  • 验证mysql联合索引最左原则
  • Mysql查询时case when语句的使用
  • Vim中简单格式化代码
  • Vim、Xshell、远程终端莫名卡死的原因
  • 关于游戏中仓库类的设计
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • 神秘莫测的时间复杂度
  • 排序算法系列之(三)——略显神秘的快速排序
  • .bat批处理(六):替换字符串中匹配的子串
  • 操作指向类成员的指针需要了解的两个操作符-*和.*
  • VS2015调试dump文件时提示未找到xxx.exe或xxx.dll
  • 结构体sockaddr、sockaddr_in、sockaddr_in6之间的区别和联系
  • Google 是如何开发 Web 框架的
  • Angular 响应式表单 基础例子
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Computed property XXX was assigned to but it has no setter
  • Consul Config 使用Git做版本控制的实现
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • js对象的深浅拷贝
  • node学习系列之简单文件上传
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 创建一种深思熟虑的文化
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序 setData 学问多
  • 运行时添加log4j2的appender
  • 【干货分享】dos命令大全
  • PostgreSQL之连接数修改
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​TypeScript都不会用,也敢说会前端?
  • ​用户画像从0到100的构建思路
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)Android开发优化---------UI优化
  • (11)MSP430F5529 定时器B
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (十三)Maven插件解析运行机制
  • (转)大型网站的系统架构
  • .“空心村”成因分析及解决对策122344
  • .equals()到底是什么意思?
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET6实现破解Modbus poll点表配置文件
  • .net程序集学习心得
  • .NET开发不可不知、不可不用的辅助类(一)
  • ::before和::after 常见的用法
  • [ SNOI 2013 ] Quare
  • [.net]官方水晶报表的使用以演示下载
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [C# 开发技巧]实现属于自己的截图工具