下面是Python合并多个TXT文件并统计词频的实现攻略,包含以下6个步骤:
-
打开每个文件,并把它们合并为一个文本。
-
把整个文本分成单词。
-
统计每个单词的数量。
-
按照单词数量排序。
-
输出排序后的结果。
-
整合成完整代码。
1. 打开每个文件,并把它们合并为一个文本
我们可以通过os
和glob
模块来找到我们要合并的文件,并打开它们。
import os
import glob
path = 'files/*.txt'
files = glob.glob(path)
content = ''
for file in files:
with open(file, 'r', encoding='utf-8') as f:
content += f.read()
2. 把整个文本分成单词
我们使用re
模块来把文章分成单词。
import re
words = re.findall(r'\b\w+\b', content.lower())
我们使用lower()
方法来把所有单词变成小写,以便于统计单词数量。
3. 统计每个单词的数量
我们可以使用Python的Counter
模块来统计每个单词的数量。
from collections import Counter
word_counts = Counter(words)
Counter
模块将一个列表转化为一个字典,包含了每个元素的数量。
4. 按照单词数量排序
使用sorted()
函数来对单词数量进行排序。
word_counts_sorted = sorted(word_counts.items(), key=lambda kv: kv[1], reverse=True)
我们使用items()
方法来获取每个单词的数量,然后使用key
参数来告诉sorted()
函数按照数量排序,reverse=True
表示按降序排列。
5. 输出排序后的结果
最后,我们可以输出排序后的结果。
for word, count in word_counts_sorted:
print(f'{word}: {count}')
这个循环将输出每个单词和它出现的次数。
示例1:现在,我们假设有两个文件file1.txt
和file2.txt
,file1.txt
包含以下内容:
Hello, world! How are you today?
file2.txt
包含以下内容:
I am doing well, thank you. How about you?
当我们运行上面的代码并把这两个文件作为输入时,我们会看到如下输出结果:
how: 2
you: 2
am: 1
are: 1
about: 1
doing: 1
hello: 1
i: 1
today: 1
well: 1
world: 1
thank: 1
可以看到代码成功统计了每个单词在这两个文件中出现的次数,并按照出现次数从高到低排列,输出了结果。
示例2:现在,我们假设有三个文件file1.txt
、file2.txt
和file3.txt
分别包含以下内容:
file1.txt: The quick brown fox jumped over the lazy dog.
file2.txt: How much wood would a woodchuck chuck, if a woodchuck could chuck wood?
file3.txt: I am the walrus, coo coo cachoo.
当我们运行上面的代码并把这三个文件作为输入时,我们会看到如下输出结果:
the: 2
wood: 2
chuck: 2
a: 2
quick: 1
brown: 1
fox: 1
jumped: 1
over: 1
lazy: 1
dog: 1
how: 1
much: 1
would: 1
woodchuck: 1
if: 1
could: 1
i: 1
am: 1
walrus: 1
coo: 1
cachoo: 1
可以看到,代码成功地统计了每个单词在这三个文件中出现的次数,并按照出现次数从高到低排列,输出了结果。
6. 整合成完整代码
将上述代码整合起来:
import os
import glob
import re
from collections import Counter
path = 'files/*.txt'
files = glob.glob(path)
content = ''
for file in files:
with open(file, 'r', encoding='utf-8') as f:
content += f.read()
words = re.findall(r'\b\w+\b', content.lower())
word_counts = Counter(words)
word_counts_sorted = sorted(word_counts.items(), key=lambda kv: kv[1], reverse=True)
for word, count in word_counts_sorted:
print(f'{word}: {count}')
以上就是Python合并多个TX文件并统计词频的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 合并多个TXT文件并统计词频的实现 - Python技术站