with open(r'E:\2023-5-117.txt', 'r') as file:
lines = file.readlines()
new_lines = []
# 过滤包含特定字符串的行
lines = [line for line in lines if 'R X D :' not in line] #删除带R X D :行
'''
使用了列表推导式,可以将每一行与 'R X D :' 这个字符串进行比较。如果当前行中不包含 'R X D :' 这个字符串,那么将该行添加到新列表 new_lines1 中;否则就不添加该行。
line:代表当前迭代的行变量名字;
for line in lines:for 循环中的 line 变量代表了从 lines 中依次取出每一行的值;
if 'R X D :' not in line:在 for 循环的基础上,使用 if 语句对每一行字符串的值进行判断。如果当前行包含 'R X D :' 字符串,那么舍弃这行;否则将当前行添加到新列表 new_lines1 中。
最终, new_lines1 将只包含那些不包含 'R X D :' 这个字符串的文件行。
'''
# 删除空行
lines = [line for line in lines if line.strip()] #删除空行
'''
使用了列表推导式,可以将每一行与 .strip() 方法进行比较。如果调用 strip() 方法后当前行不为空字符串,那么将该行添加到新列表 lines 中;否则就不添加该行。
line:代表当前迭代的行变量名字;
for line in lines:for 循环中的 line 变量代表了从 lines 中依次取出每一行的值;
if line.strip():在 for 循环的基础上,使用 if 语句对每一行字符串的值进行判断。如果调用 strip() 方法后当前行不为空字符串,那么将当前行添加到新列表 lines 中;否则舍去该行。
最终, lines 将只包含那些不为空字符串的文件行。这个操作也可以去掉行末尾的空白字符。
'''
for line in lines:
if not line.strip().endswith('):'):
# 如果该行不以 '):' 结尾,则保留该行
new_lines.append(line)
elif not line.strip().endswith('): '):
# 如果该行以 '):' 结尾但后面是空白,则删除该行
continue
else:
# 否则保留该行
new_lines.append(line)
'''
对于每一行 line:
如果当前行不是以 '): ' 结尾的,那么将该行添加到新列表 new_lines 中;
否则,如果当前行是以 '): ' 结尾但 '):' 后面有多余空格的,那么舍弃该行,直接进入下一轮循环;
否则,如果当前行是以 ' ):' 结尾但 ' ):' 前面有多余的空格,那么舍弃该行,直接进入下一轮循环;
如果以上条件都不成立,说明当前行是以 '): ' 结尾并且 ' ):' 不存在多余空格的有效行,将该行添加到新列表 new_lines 中。
最终, new_lines 中包含满足条件的文件行。
'''
with open(r'E:\2023-5-117.txt', 'w') as file:
file.writelines(new_lines)
处理前数据状态
处理后数据状态