程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

用Python隨機挖空文本供填空使用

編輯:Python
python [py文件名] [難度] [處理文本對象文件名]
::python 隨機挖空文本.py 1 input.md

處理文本對象文件名fileName,默認為input.md

難度difficulty,取值0、1、2、3(默認為0),分別對應挖空比例inter的25%、50%、75%、100%

分隔符seq,以分隔符作為依據劃分文本,下述代碼中以常見全角符號為例

排除項exc,意為忽略匹配該正則表達式的行

保留項res,意為挖空文本時,保留該正則表達式匹配的行開頭prefix

import sys
import random
import re
fileName='input.md'
if(len(sys.argv)>1):
difficulty=sys.argv[1]
if(len(sys.argv)==3):
fileName=sys.argv[2]
else:
difficulty=0
#difficulty意為難度,代表挖空的比例,0:25%,1:50%,2:75%,3:100%
content=open(fileName,'r',encoding='utf-8')
with open('output.md',"w",encoding='utf-8') as f:
for line in content:
sep='[,。;!?、]'
exc='[#]'
res='[0-9+-][.]'
lineArr=re.split(sep,line)
inter=(int(difficulty)+1)*0.25
for i in range(0,len(lineArr)):
if(lineArr[i]=='\n'):
continue
if(re.match(exc,line) is not None):
continue
elif(random.random()<=inter):
if(len(lineArr[i])>2 and re.match(res,lineArr[i][0:3])):
prefix=lineArr[i][0:3]
else:
prefix=''
lineArr[i]=prefix+'('+''.rjust(len(lineArr[i])).replace(' ',' ')+')'
line=','.join(lineArr)
f.write(line)
f.flush() # 寫入硬盤 
f.close() #關閉文件,並刷新 

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved