计算多个文件(文本)中的两个值(总单词和单字),并在Python中输出csv

2024-04-19 05:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我处理各种文本文件的集合,我想知道很多事情,比如字数,等等。我有一些代码可以成功地做到这一点,现在我想在我的工作流程中引入一个脚本,它将通过一个目录工作,并编译其中文本文件的统计信息。在

这是我的草稿:

#! /usr/bin/env python

# Get from each text file a total word count and a unique word count.
# Output a CSV with three columns: filename, total, unique.

import glob

with open (file_name) as f, open ('countfile.csv', 'w') as out :
    list_of_files = glob.glob('./*.txt)
    for file_name in list_of_files:

        ???

        out.write('{f},{t},{u}\n'.format(f =file_name, t =word_total, u =uniques)

上面的问号是我要对每个文件执行的操作的占位符,即下面的代码:

^{pr2}$

我不太知道如何在上面的代码中插入所有这些代码。不知怎么的,我怀疑这行不通,但我不知道该怎么办。如果有任何帮助,我们将不胜感激。如果我真的能想出一些办法的话。在

我知道第二个代码块可能不是最漂亮的,但它尽可能紧凑,我仍然能理解它在做什么。毫无疑问,我对Python的学习还很早。在

编辑澄清:

我有一个文本目录:

text1.txt  
text2.txt  
text3.txt  

我想要的是把这个脚本指向那个目录,让它浏览所有文本,然后输出一个CSV文件,格式如下:

text1, 345, 123
text2, 1025, 318
text3, 765, 245

(注意,不需要去掉文件名的.txt。)


Tags: csv代码name目录txt脚本countwith
1条回答
网友
1楼 · 发布于 2024-04-19 05:40:17
files = {}
for fpath in glob.glob("*.txt"):
    with open(fpath) as f:
         fixed_text = re.sub("[^a-zA-Z'-]"," ",f.read())
    words = fixed_text.split()
    total_words = len(words)
    total_unique = len(set(words))
    files[fpath] = (total_words, total_unique)
    print "Total words:", total_words
    print "Total unique:", total_unique

with open("some_csv.csv", "w") as f:
    for fname in files:
        print >> f, "%s,%s,%s" % (fname, files[fname][0], files[fname][1])

我想这应该行得通。。。在

相关问题 更多 >