我试图在一个特定单词的第二次出现之后提取文本文件的部分,直到另一个特定单词的第二次出现结束。原因是这两个词首先在目录中列出。因此,当我运行代码时,第一次出现的输出为0
示例文本:
目录
项目1a.风险因素
项目1b
目录末尾
主要内容
项目1a。危险因素
项目1b
我需要在第二次出现第1a项之间提取文本。风险因素和第1b项的第二次出现
我的代码如下:
for file in tqdm(files):
with open(file, encoding='ISO-8859-1') as f:
for line in f:
if line.strip() == 'Item 1A.Risk Factors':
break
for line in f:
if line.strip() == 'Item 1B':
break
f=open(os.path.join('QTR4_Risk_Factors',
os.path.basename(file)) , 'w')
f.write(line)
f.close()
你可以试试正则表达式:
您编写的代码几乎没有问题,其中一个问题是在扫描文档查找“结束文本”时,您没有保存所需的部分文本。如果可能的话,最好在内存中存储尽可能少的文本,因为我们不知道您试图分析的文档有多大。为此,我们可以在读取原始文件时写入新文件
Ronie的答案是正确的,但它没有说明您只想在第二次出现“开始提示”后才开始保存文本。不幸的是,我还不能评论建议的编辑,所以我添加它作为一个新的答案。 试试这个:
我认为你应该做一个标志来知道什么时候复制这些行。您还可以在上下文管理器中同时打开两个或多个文件
编辑:添加了
continue
相关问题 更多 >
编程相关推荐