我有两个问题。下面是代码:
Read =open("C:UsersMoondraDesktop/test1.txt",'r')
text =Read.read()
words =text.split()
print(words)
print(words.sort())
##counts=dict()
##for word in words:
## counts[word] = counts.get(word,0)+1
##
##
##print counts
和我要读的文本:
test1.txt
你好你好你好。
最近好吗?发生了什么事?你在哪里?你好! !
希望很快见到你。
你什么时候来?
晚餐我该做什么?
结束!
txt文件文本结束
我的两个问题是:
我试图实现一个计数每个单词的代码,我计算每个单词在文档中出现的次数。然而,当我使用上面的代码拆分单词时,单词"Hello"将显示为"Hello!",甚至是"你好"。我怎样才能避免这种情况呢?
接下来,我尝试按字母顺序对列表中的元素进行排序,但是在运行
sort()
方法后,我得到的所有回报都是none
,这真的让我感到困惑。
谢谢!
这段代码应该适用于您所描述的内容:
import re
with open("C:UsersMoondraDesktop/test1.txt", 'r') as file:
file = file.read()
words_list = re.findall(r"[w]+", file)
words_list = sorted(words_list, key=str.lower)
patterns = ["Hello"]
counter = 0
for word in words_list:
for pattern in patterns:
if word == pattern:
counter+=1
print("The word Hello occurred {0} times".format(counter)) # prints the number of times 'Hello' was found
print(words_list) # prints your list alphabetically
有几件事你应该注意:
- 我使用
re
模块而不是排序。这是因为在re模块中使用正则表达式引擎比使用split()
函数拆分字符串要简单得多。 - 我重命名了一些变量以遵循PEP8指南和Python的命名约定。请随意重命名您喜欢的
-
sort()
返回列表的原因,是因为列表的sort()
属性不返回新列表,而是更改旧列表。也就是说,列表的sort()
属性排序到位。您正在使用的sort()
返回数据类型None
。您需要使用内置的Python函数sorted()
。sorted()
函数返回数据类型list
。