- 问题描述
在做自然语言处理时,经常遇到从文本文件中读取字符串,并删除其中不需要的内容。本案例给出一种基于Python的处理方法,删除读取到的文本数据中具有规律性但是不需要的数据。基本流程为:读取文本文件(每一行存储一条文本数据),删除每个字符串开头部分的子串,再删除中间某一段子串,最后把清理后的字符串写入一个文本文件。
- 算法实现
#读取文本文件
def ReadTxtFile( fileName ):
with open( fileName, mode = 'r', encoding = 'utf-8' ) as fp:
lineNum = 0
dataTxt = []
for line in fp:
if lineNum < 5: #只读取前5行
lineNum += 1
dataTxt.append( line )
else:
break
return dataTxt, lineNum
#删除不需要的子串
def DeletePartTxtData( dataTxt, lineNum ):
data = []
ind = 0
txt =[]
for i in range( lineNum ):
txt = str( dataTxt[i] )
ind = txt.find( 'English' )
txt1 = txt[ ind-1 : ]
ind1 = txt1.find( 'http' )
ind2 = txt1.find( 'end' )
txt2 = txt1[ : ind1 ] + txt1[ ind2 + 6 :]
data.append( txt2 )
return data
#读取文本文件,删除不需要的子串后存储到新的文本文件
def ReadWriteTxtFile( fReadName, fWriteName ):
data, lineNum = ReadTxtFile( fReadName )
dataTxt = DeletePartTxtData( data, lineNum )
with open( fWriteName, mode = 'w', encoding = 'utf-8' ) as fp:
strdata = []
for i in range( lineNum ):
strdata = '[' + str(i+1) + ']' + '.' + dataTxt[i]
fp.write( strdata )
def main():
ReadWriteTxtFile( 'InitialTxtData.txt', 'TxtData.txt' )
print( 'over' )
if __name__ == '__main__':
main()
- 附件
1.InitiTxtData.txt
2.TxtData.txt
作者:YangYF