我如何让我的代码区分单词和单个字符?(Python)



(Python)我的任务是创建一个程序,收集输入()并将其放入字典中。对于文本中的每个单词,它计算其在其之前出现的次数。我的代码:

text = input()
words = {}
for word in text:
if word not in words:
words[word] = 0
print(words[word])
elif word in words:
words[word] = words[word] + 1
print(words[word])

一个示例输入可以是:

one two one two three two four three

正确的输出应该是:

0
0
1
1
0
2
0
1
然而,我的代码计算每个字符的出现次数,而不是每个单词,使输出太长。如何区分单词和字符?

这是因为text是一个字符串,而在字符串上迭代是遍历字符。你可以使用for word in text.split(),这将把字符串分割成一个列表。默认情况下,它对空白空间进行分割,因此它将在这里将其分割为一个单词列表。

给定示例输入,您需要在空格上分割text以获得单词。一般来说,将任意文本分割成单词/标记的问题并不简单;有很多自然语言处理库是专门为此构建的。

此外,对于计数,内置集合模块中的Counter类非常有用。

from collections import Counter
text = input()
word_counts = Counter(w for w in text.split())
print(word_counts.most_common())

输出
[('two', 3), ('one', 2), ('three', 2), ('four', 1)]

您正在寻找从字符串类型拆分的函数:https://docs.python.org/3/library/stdtypes.html?highlight=str%20split#str.split

用它来创建一个单词数组:

splitted_text = text.split()
完整的示例如下:
text = 'this is an example and this is nice'
splitted_text = text.split()
words = {}
for word in splitted_text:
if word not in words:
words[word] = 0

elif word in words:
words[word] = words[word] + 1
print(words)

将输出:

{'this': 1, 'is': 1, 'an': 0, 'example': 0, 'and': 0, 'nice': 0}

相关内容

  • 没有找到相关文章

最新更新