如何在文本文件中多次出现的某些单词后提取3000个字符?

时间:2018-04-07 13:33:44

标签: python

我有一个文本文件:

  

“会计原则。否定质押条款。条款限制   子公司分配。业务范围......会计   原则:在IFRS的定义中定义。行政的   代理人:SVB ......如果出现任何会计原则(如   定义如下)并且此类变更结果......“

在此文件中,“会计原则”出现三次,“IFRS”出现一次。

我尝试在每个“会计原则”和“IFRS”之后提取3000个字符(或300个字)。现在我只能在第一次出现“会计原则”后提取字符,并为“会计原则”和“IFRS”编写单独的代码。所以我的问题是如何在每次出现“会计原则”后提取3000个字符,以及如何编写一个我可以处理“会计原则”和“IFRS”的代码,而不是使用两个单独的代码?

非常感谢!

我的代码如下:

import os
sourcepath=os.listdir('try/')
for filename in sourcepath:
    inputfile='try/'+filename
    with open(inputfile, 'r') as f:
        text=f.read()
        index=text.index('Accounting Principles')
        right=text[index: index+3000]
        print(right)

import os
sourcepath=os.listdir('try/')
for filename in sourcepath:
    inputfile='try/'+filename
    with open(inputfile, 'r') as f:
        text=f.read()
        index=text.index('IFRS')
        right=text[index: index+3000]
        print(right)

2 个答案:

答案 0 :(得分:1)

此程序查找“会计原则”或“IFRS”的每个实例,并打印匹配的字符串以及超出其结尾的30个字符。

import re

with open('x.in') as fp:
    text = fp.read()

for m in re.finditer("Accounting Principles|IFRS", text):
    print(text[m.start():m.end()+30])

答案 1 :(得分:0)

您可以使用re.sub"Accounting Principles""IFRS"的任何位置创建标记,然后遍历full_string

marked_data = re.sub('Accounting\sPrinciples|IFRS', '*', open('filename.txt').read())
new_data = [marked_data[i:i+3000] for i in range(len(marked_data)-3000)]