码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-28 17:12:08      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:div   line   import   adl   mic   结果   写法   文本   转换   

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

样本如下:

技术分享
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

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

标签:div   line   import   adl   mic   结果   写法   文本   转换   

原文地址:http://www.cnblogs.com/0x03/p/7251211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!