gpt4 book ai didi

python - 删除Python中直到某个字符串或字符之前的所有内容

转载 作者:行者123 更新时间:2023-12-01 02:15:57 25 4
gpt4 key购买 nike

我需要读取文件并删除所有内容,直到出现某个字符串为止。很简单,我写了代码,但它不起作用。它返回我文件的全部内容。

我的输入文件:

/****************************************************************
*
* Function Name: ab
* Input Parameter: cd
* output Parameter: ef
* Return Value: hi
*
****************************************************************/

#include "file_a.h"
#include "file_b.h"

static inline function(int a, int b){
...
...
...
...
}

我必须删除所有内容,直到:

static inline function(int a, int b){

这样该语句将成为新文件中的第一行。

我的代码

TAG =  'static'

def delete_until(fileName,outfile):
tag_found = False
with open ('output.txt',"w") as out:
with open(fileName,'r') as f:

for line in f:
if not tag_found:
if line.strip() == TAG:
tag_found = True
else:
out.write(line)

if __name__ == '__main__':
fileName = 'myfile.txt'
outfile = 'output.txt'
delete_until(fileName,outfile)

新文件再次包含全部内容。我做错了什么?

最佳答案

如果您正在分析代码文件,它们通常足够小,可以加载到内存中。此时,只需调用一次 string.find 即可完成此操作。

with open(fileName,'r') as fin, open('output.txt',"w") as fout:
text = fin.read()
i = text.find('static')
if i > -1:
fout.write(text[i:])

这里写道:

static inline function(int a, int b){
...
...
...
...
}

output.txt

<小时/>

如果 static 有可能出现在实际 static 函数之前的注释中,并假设您正在分析的代码文件是由理智的人编写,您可以检查关键字前面是否有换行符。唯一的变化如下:

i = text.find('\nstatic') 
if i > -1:
fout.write(text[i + 1:])

Credit to JFF .

关于python - 删除Python中直到某个字符串或字符之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com