整理一个文件(111万行,每行最大560个字符,正常每行均以数字开头)时,发现其中存在特定字符导致异常换行、对齐错误问题。错行示例如下:
于是想将特定字符删除,保证文件的规范性。因为行数较多,所以加了计数条件,每到100行就写入一次。
代码如下:
import re
with open(r'D:\ProgramData\cx_list', 'rb') as file_in:
lists=[]
cnt=0
with open(r'D:\ProgramData\cx_list_ok', "a", encoding="gbk") as file_temp:
for line in file_in:
while cnt<100:
m=re.match('^[0-9]+',str(line))
cnt=cnt+1
if m:
lists.append(str(line).replace('\\t',''))
else:
lists[-1]=lists[-1].strip('\n')+str(line).replace('\\t','')
for line1 in lists:
file_temp.write(line1)
lists=[]
cnt=0
上述代码运行后,报错如下:
File "D:\ProgramData\work\char_chck.py", line 20, in <module>
lists[-1]=lists[-1].strip('\n')+str(line).replace('\\t','')
IndexError: list index out of range
lists在100行记录之后置空了,如果下一次刚好没有正则匹配到,那lists就是空的