Python读取文本,输出指定中文(字符串)
生活随笔
收集整理的這篇文章主要介紹了
Python读取文本,输出指定中文(字符串)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
因業(yè)務(wù)需求,需要提取文本中帶有檢查字樣的每一行。
樣本如下:
1 投入10kVB、C母分段820閉鎖備自投壓板 2 退出10kVB、C母分段820備投跳803壓板 3 退出10kVB、C母分段820備投合820壓板 4 檢查2、3號(hào)主變壓器分頭位置一致 5 合上820斷路器 6 檢查820斷路器確帶負(fù)荷 7 檢查2號(hào)、3號(hào)主變壓器負(fù)荷分配正常 8 拉開802斷路器 9 檢查802斷路器在分閘位置 10 檢查3號(hào)主變壓器不過(guò)負(fù)荷我們要用的包:re(python 強(qiáng)大的正則包),codecs(專門用作編碼轉(zhuǎn)換)
思路:一種思路是直接用正則找出檢查,按照樣本可以這樣寫:\d{1,2}\s檢查,屬于一勞永逸的寫法。還有一種就是下面比較裸的寫法,先用python的readlines()方法讀取文本的每一行,再用?u'檢查'判斷帶有‘檢查’的每一行,這種方法比較麻煩的地方就是還需要去掉樣本中的序號(hào),def func()就是用來(lái)解決這個(gè)問(wèn)題的。至于為什么我要用第二種,我也不知道。 :)
代碼如下:
import re import 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結(jié)果:
>>> ================================ RESTART ================================ >>> 檢查2、3號(hào)主變壓器分頭位置一致 檢查820斷路器確帶負(fù)荷 檢查2號(hào)、3號(hào)主變壓器負(fù)荷分配正常 檢查802斷路器在分閘位置 檢查3號(hào)主變壓器不過(guò)負(fù)荷 >>>當(dāng)然我們還可以新建一個(gè)list,用append方法將for循環(huán)出來(lái)的結(jié)果整合到一起:
test = [] ''' ''' ''' test.append(result) print test?
轉(zhuǎn)載于:https://www.cnblogs.com/yourstars/p/5892754.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Python读取文本,输出指定中文(字符串)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: React-Native学习笔记
- 下一篇: Python操作Redis的5种数据类型