5.1 统计英文文件中的单词数(project)

任务描述
本关任务:编写一个能统计文件中单词数量的小程序。

相关知识
为了完成本关任务,你需要掌握:
1.获取文件内容
2.字符串方法的使用

读取文件
open(filename)函数可以打开诸如txt,csv等格式的文件。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

例如:

with open('a.txt', 'r', encoding='utf-8') as text:  # 打开文件a.txt,创建文件对象
    txt = text.read()  # 读文件为字符串
print(txt)  # 输出字符串

字符串方法
为了方便编程,Python 为我们提供了许多方法这里我们将学习其中的两个字符串方法。

替换

str.replace(oldvalue, newvalue, count)方法是在字符串str中,用另一个newvalue字符串替换oldvalue字符串count次。

参数值:

示例如下:

txt = "I like bananas. She likes bananas too. "
x1 = txt.replace("bananas", "apples")     # 替换所有
print(x1)  # I like apples. She likes apples too. 
x2 = txt.replace("bananas", "apples", 1)  # 只替换一次
print(x2)  # I like apples. She likes bananas too. 

切分

str.split(sep=None, maxsplit=- 1)将字符串拆分成一个列表,其中每个单词都是一个列表项。可以指定分隔符,默认分隔符是空白字符(包括空格、制表\t、换行\n、回车\r、进纸\f和纵向制表符\v)。

参数值:

示例如下:

txt = "yearly a.每年的 ad.一年一度"
x1 = txt.split()  # 遇空白字符就切分,返回3个元素的列表
print(x1)         # ['yearly', 'a.每年的', 'ad.一年一度']
x2 = txt.split(maxsplit=1)  # 只切分一次,返回2个元素的列表
print(x2)         # ['yearly', 'a.每年的 ad.一年一度']

输入输出格式
输入格式
输入为一行,是一个文本文件名,例如example1.txt。

输出格式
输出为一行,是打开并读取输入的文件名,对文件内容进行单词数目统计后的结果, 输出共有m个单词,具体格式见示例。
a.txt
b.txt
mySunshine.txt

编程要求
根据提示,在右侧编辑器补充代码。

提示:统计单词数量时,形如It's、Let's  、don't的缩写形式要切分或替换处理为2个单词计数。另外为了处理方便,约定所有测试文件中没有's表示所有格的情况。

测试说明
平台会对你编写的代码进行测试:

测试输入:
mySunshine.txt
预期输出:
共有7个单词

提示
1.本题的数据文件的路径可以点右上角的数据集,然后按提示点击复制,这样可以看到文件的路径,用加号将文件路径与文件 名拼接到一起使用。

path = '/data/bigfiles/'
with open(path+file, 'r', encoding='utf-8') as f:

2.本题不保证每个标点符号后面都有空格,所以统计单词时要先将标点符号替换为空格再进行统计。

import re
import os
def count_words_in_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        text = file.read()
    words = re.findall(r'\b\w+\b', text)
    return len(words)
path = '/data/bigfiles/'
file_name = input().strip()
file_path = os.path.join(path, file_name)
word_count = count_words_in_file(file_path)
print(f"共有{word_count}个单词")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值