任务描述
本关任务:编写一个能统计文件中单词数量的小程序。
相关知识
为了完成本关任务,你需要掌握:
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}个单词")