Split函数,将带有标点符号的单词分开.想要预防.劈开后如何按字母顺序排列



我有两个问题。下面是代码:

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文件文本结束

我的两个问题是:

  1. 我试图实现一个计数每个单词的代码,我计算每个单词在文档中出现的次数。然而,当我使用上面的代码拆分单词时,单词"Hello"将显示为"Hello!",甚至是"你好"。我怎样才能避免这种情况呢?

  2. 接下来,我尝试按字母顺序对列表中的元素进行排序,但是在运行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

最新更新