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() #關閉文件,並刷新