【发布时间】:2021-03-08 18:02:13
【问题描述】:
给我一个文本(带有标点符号),我需要计算每个单词在其中出现的次数。我想这样做如下:我想将单词与其他字符分开,然后我想创建一个频率表。这是我的代码:
import re
text=input("Input:")
space={''}
text=re.split("[. | , | ! | ?| |]", text)
sett=set(text)-space
frequency_table={}
for element in sett:
frequency_table[element]=text.count(element)
print(frequency_table)
这可以解决问题,但我的问题是我无法找到一种方法让我的正则表达式从一开始就删除空格。我发现了这个非常奇怪的解决方案,但我不知道,它感觉不“正确”,应该有一种方法也可以使用该正则表达式删除空格。
编辑:这是一个示例输入和一个示例输出:
Input: Bob?...Bob has many, many apples!... But you, how many apples do you have?
Output: Bob:2
has:1
many:3
apples:2
But:1
you:2
how:1
do:1
have:1
注意:输出中单词的顺序无关紧要,我不在乎它们是如何排序的。
【问题讨论】:
-
您能否包括一些示例输入以及预期输出。
-
@sushanth 当然,我会马上加入。
-
“从头开始删除空格” -
text.lstrip()? -
@WiktorStribiżew 我以前没有见过这个功能,所以我不确定我应该如何使用它。我试图把它放在 text=re.split("[. | , | ! | ?| |]", text) 上面,但它似乎没有做任何事情。
-
为什么不直接使用
Counter(re.findall(r'\w+', text))或Counter(re.findall(r'[^\W_]+', text))?为什么要处理标点符号?
标签: python python-3.x regex split