拆分函数用标点符号拆分单词。想预防。拆分后如何按字母顺序排列?

2024-06-16 09:00:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个问题。代码如下:

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

你好,你好

一切都好。怎么回事? 你在哪?你好

希望很快见到你

你什么时候过来

晚餐我该做什么

结束了

文本文件的文本结尾

我的两个问题如下:

  1. 我试图实现一个count-each-word代码,其中我计算每个单词在文档中出现的次数。 但是,当我使用上述代码拆分单词时,“Hello”一词将显示为“Hello!,”或者单独说“你好”。我怎样才能避免这种情况

  2. 接下来,我尝试按字母顺序对列表中的元素进行排序,但在运行sort()方法后得到的结果是none,这让我很困惑

谢谢


Tags: 代码texttxthelloreadopensort单词
1条回答
网友
1楼 · 发布于 2024-06-16 09:00:14

此代码适用于您描述的内容:

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模块而不是sort。这是因为在re模块中使用regular expression引擎比使用split()函数分割字符串要简单得多
  • 我重命名了一些变量以遵循Python的PEP8指南和命名约定。随意根据您的喜好重新命名
  • sort()返回列表的原因是,列表的sort()属性不返回新列表,而是更改旧列表。也就是说,列表的sort()属性进行适当排序。您使用的sort()返回数据类型None。您需要改用内置的Python函数sorted()sorted()函数返回数据类型list

相关问题 更多 >