使用python3

时间:2019-06-07 21:55:35

标签: python python-3.x

我有一个包含许多txt文件的文件夹。 我想计算每个txt文件中某个部分中一组单词的出现次数,并将结果导出到新的Excel文件中。 具体来说,我只想在单词“ Company A”之后到单词“ Company B”结束的部分文本中查找单词的出现。

例如:

我想在以下文本的粗体部分中查找“ Corporation”和“ Board”一词:

... 公司A的董事会负责监督公司业务运营及其战略计划的实施所固有的风险管理。董事会在年度战略计划会议上并于全年定期审查与公司战略计划有关的风险,作为其对B公司战略方向的审议的一部分。此外,董事会应对与...相关的主要风险。

我设法计算了一组单词的出现次数,但从整个txt文件开始,而不是从A公司到B公司的一部分。

import os
import sys
import glob

for filename in glob.iglob('file path' + '**/*', recursive=True):
    def countWords(filename, list_words):
        try:
            reading = open(filename, "r+", encoding="utf-8")
            check = reading.readlines()
            reading.close()
            for each in list_words:
                lower = each.lower()
                count = 0
                for string in check:
                    word_check = string.split()
                    for word in word_check:
                        lowerword = word.lower()
                        line = lowerword.strip("!@#$%^&*()_+?><:.,-'\\ ")
                        if lower == line:
                            count += 1 
                print(lower, ":", count)
    except FileNotFoundError:
        print("This file doesn't exist.")
        for zero in list_words:
            if zero != "":
                print(zero, ":", "0")
            else:
                pass
    print('----')
    print(os.path.basename(filename))
    countWords(filename, ["Corporation", "Board"])

示例文本的最终输出应如下所示:

  • txtfile1
  • 公司:2
  • 董事会:1

并且应该对文件夹的所有txt文件复制上述过程,并将其导出为ex​​cel文件。

感谢您的考虑,对于问题的长度,我深表歉意。

1 个答案:

答案 0 :(得分:0)

如果在看到公司b之前看到公司a的重复,则假设您需要整个字符串,则可以尝试regexp。

re.findall('company a.*?company b', 'company a did some things in agreement with company b')

这将提供从a公司开始到b公司结束的所有文本字符串的列表。