Python讀取文本,輸出指定中文(字符串)
阿新 • • 發佈:2017-07-28
class 分享 /tmp () fun 問題 print fin 斷路器
因業務需求,需要提取文本中帶有檢查字樣的每一行。
樣本如下:
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讀取文本,輸出指定中文(字符串)