如何删除文本文件中特定行之后的所有行?
例如,我想更改文件:
这是重要的一号线。
这是重要的第二行。
这里开始扔掉线。
这里是扔掉线一。
这是扔掉线2。
对此:
这是重要的一号线。
这是重要的第二行。
我想我会想regex匹配r '这里开始(。|\n)*'来匹配文件中'Here begins the '之后的所有内容,但我迷路了。
我试过这个,但它不工作:
import re
with open ("file1.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
found_line = re.search(r'^Here begins the(.|\n)*',lines)
lines = lines[:found_line.start()]
with open ("file1.txt", "w", encoding="utf-8") as f:
f.writelines(lines)
谢谢你。
3条答案
按热度按时间ozxc1zmp1#
你可以读取这个文件,用re.sub()应用你提到的正则表达式,然后像这样写入这个文件:
输出:
ckx4rj1h2#
您可以逐行读取文件,并在该行与正则表达式匹配时中断循环。
顺便说一下,你可以用
line.startswith("Here begins the")
替换re.search(r'^Here begins the(.|\n)*', line)
,并删除re
库,因为你只是检查字符串的开头,看看该行是否符合你的标准。nfg76nw03#
如果你想在多行中使用
^
,你必须使用re.MULTILINE
或简称re.M
。这种模式
(.|\n)*
是一种非常低效的构造。您可以使用.*
并使用re.S
标志来对换行符进行点匹配。然后使用
re.sub
将整个匹配替换为空字符串。或者使用内联修饰符的模式: