首页 > 解决方案 > Python - 循环文件并按文件存储事件

问题描述

我有一个需要调整的 python 脚本,我必须打开 4 个不同的文件并生成一个最终文件,其中包含每个文件的“单词”出现次数,例如:

格式:文件 - 文件 1 中的出现,文件 2 中的出现,文件 3 中的出现,文件 4 中的出现

苹果, 3,4,1,5 菠萝, 7,4,1,3

我想在不使用外部库的情况下做到这一点。最初,我的想法是将值存储在列表中,然后将它们添加到文件中,但我看不到它的执行情况。目前,单个文件的代码我有这样的:

def data():
    list_words = []
    with open("story.txt") as words:
        for line in words:
            word = line.split()
            for i in range(len(word) + 1):
                if i not in list_words:
                    list_words.append(i)
                else: 
                    list_words[i] += 1

我在其他帖子中没有找到太多相关帮助,欢迎任何想法,谢谢!

编辑:我必须打开并验证单词的文件示例:

http://textfiles.com/stories/3lpigs.txt http://textfiles.com/stories/adler.txt

它们是带有故事的txt文件

标签: python-3.x

解决方案


这是最简单的单词计数器,它使用字典键是唯一的这一事实。

import tkinter
from tkinter import filedialog

master = tkinter.Tk()
master.withdraw()

def data( pathfilename ):

    word = dict()
    with open( pathfilename, mode='rt' ) as words:
        text = words.read()
    for line in text.split('\n'):
        for k in line.split():
            if k in [
                '', chr(10), chr(13), chr(9), '.', ',', '!', '?', ':', ';',
                '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '\\',
                '|', '<', '>', '/', '"', "'", chr(96), '~', '[', ']', '{', '}' ]:
                pass
            elif k in word:
                word[ k ] += 1
            else:
                word[ k ] = 1
    return word

fdir = filedialog.askopenfilename( title = 'Pick a txt file' )
if fdir:
    result = data( fdir )
    print( len( list( result.keys() ) ) )
    print()
    for k,v in result.items():
        print( f'{k} = {v}' )

master.destroy()

它返回一个单词字典和计数。


推荐阅读