python - Python删除多行
问题描述
我正在尝试从我拥有的文件中删除某些重复的行。我正在使用以下代码,但它似乎不起作用。没有错误消息,只是在输出文件中没有删除任何内容。我附上了下面的代码和我要更改的文件部分的示例。有谁能帮忙吗?
代码:
infile = "angles"
outfile = "angles_1.txt"
delete_list = ["""ITEM: TIMESTEP
0
ITEM: NUMBER OF ENTRIES
18
ITEM: BOX BOUNDS pp pp pp
0 250
0 250
0 250
ITEM: ENTRIES c_11[1] c_11[2] c_11[3] c_11[4] c_22"""]
fin = open(infile)
fout = open(outfile, "w+")
for line in fin:
for word in delete_list:
line = line.replace(word, "")
fout.write(line)
fin.close()
fout.close()
我要更改的文件:
ITEM: TIMESTEP
0
ITEM: NUMBER OF ENTRIES
18
ITEM: BOX BOUNDS pp pp pp
0 250
0 250
0 250
ITEM: ENTRIES c_11[1] c_11[2] c_11[3] c_11[4] c_22
1 2 3 1 180
2 3 4 1 180
3 4 5 1 180
4 5 6 1 180
5 6 7 1 180
6 7 8 1 180
7 8 9 1 180
8 9 10 1 180
9 10 11 1 180
10 11 12 1 180
12 13 14 1 180
11 12 13 1 180
15 16 17 1 180
14 15 16 1 180
13 14 15 1 180
18 19 20 1 180
17 18 19 1 180
16 17 18 1 180
ITEM: TIMESTEP
1000
ITEM: NUMBER OF ENTRIES
18
ITEM: BOX BOUNDS pp pp pp
0 250
0 250
0 250
ITEM: ENTRIES c_11[1] c_11[2] c_11[3] c_11[4] c_22
2 3 4 1 154.251
它会像这样重复几百次。
解决方案
您已经创建了一个包含一个元素的列表,但我怀疑您想要一个包含许多元素的列表,每行一个。像这样创建它:
delete_list = """ITEM: TIMESTEP
0
ITEM: NUMBER OF ENTRIES
18
ITEM: BOX BOUNDS pp pp pp
0 250
0 250
0 250
ITEM: ENTRIES c_11[1] c_11[2] c_11[3] c_11[4] c_22""".split("\n")
然后在你的 for 循环 ( for line in fin
) 中检查整行是否匹配,如果不匹配,则将其写入,fout
否则跳过它。
if line.strip() not in delete_list:
fout.write(line)
推荐阅读
- scala - 如何在不重复 Gatling 中的整个功能块的情况下重复查询参数更改的请求?
- ionic-framework - 如何获得正确的宽度
运行? - laravel - Laravel + Rabbit = Crontab vs Supervisor
- node.js - SSL 例程:ssl3_get_record:错误的版本号
- node.js - Nodejs:express-winston 日志记录问题
- reactjs - 使用 Promise 函数响应 Axios Http 调用
- python - 使用 PyQt 读取条形码:为什么类读取输入两次?
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'/env/lib/python3.7/site-packages/googlesearch/browser_agents.txt'
- python - 使用正则表达式匹配最后一次出现
- azure - Azure Blob 错误:指定的 Blob 不存在,但 Blob 存在