Python读取文本,输出指定中文(字符串)

因业务需求,需要提取文本中带有检查字样的每一行。

样本如下:

1 投入10kVB、C母分段820闭锁备自投压板
2 退出10kVB、C母分段820备投跳803压板
3 退出10kVB、C母分段820备投合820压板
4 检查2、3号主变压器分头位置一致
5 合上820断路器
6 检查820断路器确带负荷
7 检查2号、3号主变压器负荷分配正常
8 拉开802断路器
9 检查802断路器在分闸位置
10 检查3号主变压器不过负荷   

我们要用的包:re(python 强大的正则包),codecs(专门用作编码转换)

思路:一种思路是直接用正则找出检查,按照样本可以这样写:\d{1,2}\s检查,属于一劳永逸的写法。还有一种就是下面比较裸的写法,先用python的readlines()方法读取文本的每一行,再用 u‘检查‘判断带有‘检查’的每一行,这种方法比较麻烦的地方就是还需要去掉样本中的序号,def func()就是用来解决这个问题的。至于为什么我要用第二种,我也不知道。 :)

代码如下:

import re
import codecs

f= codecs.open(‘F:/parseWord/tmp/F1040EZ.content.txt‘,‘r‘,‘utf-8‘)
s = f.readlines()

f.flush()
f.close()
for fileLine in s:

    if u‘检查‘ in fileLine:
        line_pattern =r‘\s*\d+\s?(.*)‘

        def func(text):
            c = re.compile(line_pattern)
            lists = []
            lines = text.split(‘\n‘)
            for line in lines:
                r = c.findall(line)
                if r:
                    lists.append(r[0])

            return ‘\n‘.join(lists)

        result = func(fileLine)
        print result

结果:

>>> ================================ RESTART ================================
>>>
检查2、3号主变压器分头位置一致   

检查820断路器确带负荷   

检查2号、3号主变压器负荷分配正常   

检查802断路器在分闸位置   

检查3号主变压器不过负荷
>>> 

当然我们还可以新建一个list,用append方法将for循环出来的结果整合到一起:

test = []
‘‘‘
‘‘‘
‘‘‘
test.append(result)
print test
时间: 2024-08-27 02:46:16

Python读取文本,输出指定中文(字符串)的相关文章

【转载】Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

python读取文本、配对、插入数据脚本

#-*- coding:UTF-8 -*- #-*- author:Zahoor Wang -*- import codecs, os, sys, platform, string def env(): return platform.system() def read_file(uri, charset = "utf-8"): f = codecs.open(uri, "r", charset) s = f.read() f.close() return s de

python读取文本数据写入到数据库及查询优化

文本数据格式 ip2int函数用于IP地址转化为整数 int2ip函数用于整数转化为IP地址 insert_row函数用于插入数据库记录 from __future__ import print_function import torndb def get_mysql_conn():     return torndb.Connection(         host=mysql["host"] + ":" + mysql["port"],   

python 读取文本

将文本转换到NumPy 数组中,做机器学习或其他任何任务,文本处理的技能必不可少.python 实现实现了很精简强大的文本处理功能: 假设 文件 traindata.csv 中有数据 1000行,3列特征,第四列(最后一列)为类标签 1. 基本方法: def file2matrix(): dataMat = [] labelMat = [] fr = open('./traindata.csv','rb') fr.readline() for line in fr.readlines(): #读

【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, ou

Nio 读取UTF-8文件出现中文乱码

错误代码 String filePath = "viewflow.html" ; StringBuilder sb = new StringBuilder(1024*10); try { BufferedReader reader = new BufferedReader(new FileReader(new File(filePath))); CharBuffer charBuff = CharBuffer.allocate(1024); int length = -1 ; whil

Python的print输出中文对齐问题

问题描述: 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好: s1 = 'I am a long sentence.' s2 = 'I\'m short.' print '%-30s%-20s' %(s1,s2) #'%-30s' 含义是 左对齐,且占用30个字符位 print '%-30s%-20s' %(s2,s1) 输出: 注: 这里应用了最原始的cmd控制台,一些IDE自带的控制台(如Sublime text)可能会有不同的输出效果. 但当字符串包含中文

Python 中读取csv文件中有中文的情况

Python 中读取csv文件中有中文的情况,提示编码问题: 读取的时候: import sys reload(sys) #中文错误 sys.setdefaultencoding( "utf-8" ) save 存储的时候: dataframe可以使用to_csv方法方便地导出到csv文件中,如果数据中含有中文,一般encoding指定为"utf-8″,否则导出时程序会因为不能识别相应的字符串而抛出异常,index指定为False表示不用导出dataframe的index数据

一个新手的Python自学之旅 #MacBook #《“笨办法”学Python》#第七章:字符串、文本、各种打印、转义序列、手动输入raw_input()

第七章预告:字符串.文本.各种打印.转义序列.手动输入raw_input() ------------------------------------<习题6:字符串和文本>--------------------------------------- 在这里还时有必要详细介绍一下字符串以及和格式化字符之间的应用: 字符串:通常是指需要展示给别人的或者是想要从程序里“导出”的一小段字符,吧啦吧啦吧啦吧啦,是不是觉得挺拗口的,不如举个例子来的实在. 在ex1.py的这段代码print "