我有两个问题。这是代码:
Read =open("C:\Users\Moondra\Desktop/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的
Hello Hello Hello。
一切如何。到底是怎么回事? 你在哪?喂!!
希望很快见到你。
你什么时候来的?
我应该在晚餐时做些什么?
结束!
来自txt文件的文字结尾
我的两个问题如下:
我正在尝试实现每个单词的计数代码,其中我计算每个单词在文档中出现的次数。 但是,当我使用上面的代码分割单词时,单词“Hello”将显示为“Hello!”,甚至“Hello”。分别。我怎么能避免这个?
接下来,我尝试按字母顺序对列表中的元素进行排序,但是在运行sort()
方法后我获得的所有内容都是none
,这让我很困惑。
谢谢!
答案 0 :(得分:2)
此代码适用于您所描述的内容:
import re
with open("C:\Users\Moondra\Desktop/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模块中使用regular expression引擎要比使用split()
函数分割字符串要复杂得多。sort()
返回列表的原因是因为列表的sort()
属性不返回新列表,而是更改旧列表。也就是说,列表的sort()
属性就地排序。您使用的sort()
会返回数据类型None
。您需要使用内置的Python函数 sorted()
。 sorted()
函数返回数据类型list
。