首页 > 代码库 > Python读取文本,输出指定中文(字符串)
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 reimport codecsf= 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读取文本,输出指定中文(字符串)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。