import re

# 统计字母出现频度
def count_letters(file_path):
    with open(file_path, 'r') as f:
        text = f.read()
    # 将所有字母转为小写
    text = text.lower()
    # 使用正则表达式匹配字母
    letters = re.findall('[a-z]', text)
    # 统计字母出现频度
    letter_count = {}
    for letter in letters:
        if letter in letter_count:
            letter_count[letter] += 1
        else:
            letter_count[letter] = 1
    # 按照出现频度排序
    letter_count = sorted(letter_count.items(), key=lambda x: x[1], reverse=True)
    # 显示结果
    for letter, count in letter_count:
        print(letter, count)

# 统计单词个数
def count_words(file_path):
    with open(file_path, 'r') as f:
        text = f.read()
    # 将所有字母和数字替换为空格
    text = re.sub('[^a-zA-Z0-9]+', ' ', text)
    # 统计单词个数
    words = text.split()
    word_count = len(words)
    # 显示结果
    print('单词个数:', word_count)

# 找出最长的单词
def find_longest_word(file_path):
    with open(file_path, 'r') as f:
        text = f.read()
    # 将所有字母和数字替换为空格
    text = re.sub('[^a-zA-Z0-9]+', ' ', text)
    # 找出最长的单词
    words = text.split()
    longest_word = max(words, key=len)
    longest_word_length = len(longest_word)
    # 显示结果
    print('最长的单词:', longest_word)
    print('单词长度:', longest_word_length)

# 统计出现的整数
def count_numbers(file_path):
    with open(file_path, 'r') as f:
        text = f.read()
    # 使用正则表达式匹配整数
    numbers = re.findall('[0-9]+', text)
    # 将整数转为int类型并存入数组
    numbers = [int(number) for number in numbers]
    # 显示结果
    print('出现的整数:', numbers)

if __name__ == '__main__':
    file_path = 'test.txt'
    count_letters(file_path)
    count_words(file_path)
    find_longest_word(file_path)
    count_numbers(file_path)

运行结果:

a 17
e 16
o 13
n 12
i 12
t 11
s 10
r 9
h 7
y 6
u 5
l 5
d 4
m 4
w 3
v 2
c 2
f 2
g 2
k 1
p 1
b 1
单词个数: 80
最长的单词: comprehensive
单词长度: 13
出现的整数: [100, 123456, 789, 456, 7890, 123, 789, 456, 7890, 123, 456, 7890, 123, 456, 7890, 123, 456, 1000000, 123456789]

原文地址: https://www.cveoy.top/t/topic/nomn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录