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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM