擅长:python、mysql、java
<p>您可以使用<a href="https://docs.python.org/3/library/re.html#re.sub" rel="nofollow noreferrer">regex</a>指定一个模式来检测要删除的行:</p>
<pre class="lang-py prettyprint-override"><code>import re
with open(file) as input_file, open(newfile, 'w') as new:
new.write(re.sub(r"@[^@]+/.*\n", "", input_file.read())
</code></pre>
<p><a href="https://regex101.com/r/AgrKTN/1/" rel="nofollow noreferrer">Regex Demo</a></p>
<hr/>
<p>如果文件太大,您无法一次读取所有文件,您可以执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>buff = []
with open(file) as input_file, open(newfile, 'w') as new:
for line in input_file:
if line.startsiwth('@'):
new.writelines(buff)
buff = []
if line.startswith('/'):
buff = []
continue
buff.append(line)
</code></pre>
<p>这是为行保存一个缓冲区,每次遇到<code>@</code>时,缓冲区都会刷新到文件中。另一方面,当遇到<code>/</code>时,缓冲区被重置。可能需要一些边缘案例的工作,但这是给你一个想法</p>