想学py的小白 发表于 2023-4-24 21:10:56

根据给定的文本文件 words.txt(可将该文件存放在任意目录,注意打开文件 时要加入...

题目:
根据给定的文本文件 words.txt(可将该文件存放在任意目录,注意打开文件
时要加入正确的路径)编写函数 loadWords(),words.txt 包含若干小写英文 单词。要求:
1)读入该文件,统计并输出单词的个数
2)                返回单词列表(注意:只返回单词列表即可,不要在屏幕上显示, 因为文件很大,在屏幕上显示会花很长时间)

代码:
import re
def count_words(text):
    with open('D:/Desktop桌面/words.txt') as file:
      text = file.read()
      words = re.findall(r'+', text)      #这一步是啥意思? re模块的使用中,没找到'+'的含义
      count = len(words)
      return count
print(count_words('D:/Desktop桌面'))





words.txt文件内容:
Very quietly I take my leave
As quietly as I came here;

Quietly I wave good-bye

To the rosy clouds in the western sky. The golden willows by the riverside Are young brides in the setting sun;
Their reflections on the shimmering waves Always linger in the depth of my heart.
The floating heart growing in the sludge Sways leisurely under the water;
In the gentle waves of Cambridge I would be a water plant!
That pool under the shade of elm trees

Holds not water but the rainbow from the sky; Shattered to pieces among the duckweeds
Is the sediment of a rainbow-like dream?

To seek a dream? Just to pole a boat upstream To where the green grass is more verdant;
Or to have the boat fully loaded with starlight And sing aloud in the splendor of starlight.
But I cannot sing aloud

Quietness is my farewell music;

Even summer insects heap silence for me Silent is Cambridge tonight!

歌者文明清理员 发表于 2023-4-24 21:11:47

本帖最后由 歌者文明清理员 于 2023-4-24 21:12 编辑

import re

def loadWords():
    with open("path/to/words.txt", 'r') as f:
      text = f.read()
      words = re.findall(r'+', text)
      count = len(words)
      return words
      # return count, words   # 如果需要返回单词个数,可以改为这样

wordList = loadWords()
print(len(wordList))   # 输出单词个数
解释:
re.findall(r'+', text) 的意思是查找所有由英文字母(大小写)组成的单词。正则表达式中的 [] 是字符集合,方括号中的 a-zA-Z 表示匹配所有英文字符,加上无限次重复符号 + 表示匹配前面出现的英文字符一次或多次。

函数 loadWords() 中用 with open 语句打开文件,Python 会自动在块结束时关闭文件。read() 方法将整个文本读入一个字符串 text 中。findall() 方法使用正则表达式,在 text 中查找符合要求的单词,返回一个单词列表。最后返回单词列表。

isdkz 发表于 2023-4-24 21:13:33

您的代码目前是用于计算并输出 words.txt 文件中单词的个数。代码中的 `re.findall(r'+', text)` 表示找出所有由大小写字母组成的单词。`` 表示任意一个大小写字母,`+` 表示至少出现一次。所以这个正则表达式将匹配到文本中所有大小写字母组成的单词。这段代码不完全符合题目要求,需要稍作修改。这里是符合要求的代码:

import re

def loadWords(file_path):
    with open(file_path, 'r') as file:
      text = file.read()
      words = re.findall(r'+', text.lower())
      print(f"单词的个数: {len(words)}")
      return words

words_list = loadWords('D:/Desktop桌面/words.txt')


代码中的 `re.findall(r'+', text.lower())` 只查找小写字母的单词,并将文本全部转为小写,以满足题目要求。此外,函数名称从 `count_words` 更改为 `loadWords`,并接收文件路径作为参数,使其更符合题目要求。
页: [1]
查看完整版本: 根据给定的文本文件 words.txt(可将该文件存放在任意目录,注意打开文件 时要加入...