樹心幽徑

« 20191119在WINDOWS安裝PIME新酷音輸入程式並使用蝦米輸入法 | Main | 20191122用DevC++來編寫循序搜尋法與二分搜尋法程式 »

20191120用PYTHON設計可輸入拆碼來搜尋Boshiamy.cin文字檔的程式readb.py
2019/11/20,21:26

(1) 在windows開始功能表執行IDLE(python 3.7 64bit)並按CTRL+N在PYTHON文字編輯器編寫如下程式碼並存為d:\readb.py

程式碼:

key = input("請輸入無蝦米拆碼: ")
import re
f = open("Boshiamy.cin",'r',encoding = 'utf-8')
line = f.readline()
c=0
while line:
    line = f.readline()
    ROBJ = re.match( r'^%s'%key, line, re.M|re.I)
    if ROBJ:
       c=c+1
       print(c,line)

f.close()

 

(1b)以上程式碼說明:

(1b-1)自鍵盤取得輸入並記在key變數中   : key = input("請輸入無蝦米拆碼: ") 

(1b-2)匯入正則表示法程式庫模組 :   import re                                  

 (1b-3)以唯讀模式開啟以UTF8編碼的文字檔Boshiamy.cin並傳回檔案指標f:  

     f = open("Boshiamy.cin",'r',encoding = 'utf-8')

 (1b-4)自檔案讀取一行文字並記在line變數中:   line = f.readline()

(1b-5)設定計數變數c的初值為0  : c=0

(1b-6) 當line有值則進行如下WHILE迴路範圍的重覆動作:

while line:

(1b-7)自自檔案讀取一行文字並記在line變數中:    

line = f.readline()

(1b-8)用re.match函式比對line字串的開頭是否有剛輸入的key:

re.M表示有支援^行首定位符號,re.I表示大、小寫字元被視為一致。 

ROBJ = re.match( r'^%s'%key, line, re.M|re.I)

(1b-9)假如ROBJ有值(表示有查到)則進行IF範圍的動作

  if ROBJ:

(1b-10)將計數變數c的值累加1
       c=c+1

(1b-11)印出目前的c及line
       print(c,line)

(1b-12)關閉檔案

f.close()

 

(2)按F5儲存編寫的程式並執行:(資料檔Boshiamy.cin要和本程式檔擺在同一個目錄下)

請輸入無蝦米拆碼: LTK
1 ltk 新

2 ltkg 㜪

 

請輸入無蝦米拆碼: okd
1 okd 吳

2 okd 吴

3 okdv 吴

請輸入無蝦米拆碼: ehi
1 ehi 肅

2 ehi 歗

3 ehi 粛

4 ehi 肃

5 ehir 粛

6 ehiv 歗

(3)Boshiamy.cin文字檔截圖如下:(資料檔Boshiamy.cin要和readb.py程式檔擺在同一個目錄下)

alt

(4)參考:

REF 1: Python FILE readline

REF 2: Python Regular Expressions

 

迴響

 
Accessible and Valid XHTML 1.0 Strict and CSS Powered by LifeType