计算 Python 字符串中的字符频率

Posted

技术标签:

【中文标题】计算 Python 字符串中的字符频率【英文标题】:compute character frequencies in Python strings 【发布时间】:2016-05-18 18:41:46 【问题描述】:

我想知道 Python 3.5 中是否有一种方法可以检查字符串是否包含某个符号。另外我想知道是否有办法检查字符串包含的数量。例如,如果我想检查字符 '$' 在这个字符串中出现了多少次...... ^$@%#$$, 我该怎么做?

【问题讨论】:

你尝试过使用正则表达式吗? 可能重复:***.com/questions/1155617/… 【参考方案1】:

您可以使用split 来检查符号是否在字符串中:

if your_str.split('$'):
    print(your_str.count('$'))

你也可以使用re.findall:

import re
print(len(re.findall('\$', your_str)))

如果字符串中没有这样的符号,则返回0,否则返回字符串中该符号的计数。

但最简单的方法是检查并返回 count 如果符号在:

print(your_str.count('$'))

如果没有找到,它会返回0

【讨论】:

"re.findall" 听起来像是一种有趣的方法,我还没有看到我会研究它。谢谢! findall 的好处在于您可以搜索模式,而不仅仅是符号 如果我决定走那条路,那将来可能会有所帮助。 为什么要使用split 来检查字符串中是否有符号?这是一种相当迂回的思考方式(更不用说效率低下)。此外,这个简单问题的正则表达式似乎也有点矫枉过正。 . . '$' in your_str 是检查字符串中是否存在子字符串的最佳方法。 . .如果您需要它出现的索引,那么我想index = your_str.find('$') 将是建议的方法。 . . 是的 find/index 或者只是如果 string 中的符号可以正常工作,但它们已经包含在其他答案/cmets 中。所以我只是添加了其他几种替代方法,当您搜索模式时 findall 很好,这就是为什么我提到它并且 split 只是一个简短的,我同意 find 会更快,因为它会在第一次出现后停止跨度> 【参考方案2】:

这些是内置函数 indexcount。您可以在official site 找到完整的文档。请习惯自己做研究;第一步是熟悉语言元素的名称。

if my_str.index('$') != 0:
    # Found a dollar sign

print my_str.count('$')

【讨论】:

谢谢,我会做更多的研究! '$' in my_str -- 这是一种更惯用的方式来检查字符串中的子字符串... 我考虑在 my_str 中使用 '$' 但我更喜欢另一个... @mgilson if '$' in my_str: 是更好的选择。正如您所做的是假设字符已经在字符串中(如果未找到则返回错误)。此外,如果您有字符串 '$Hello$',则 if 语句不会为任何以该字符开头的字符串返回 True

以上是关于计算 Python 字符串中的字符频率的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pythons内置map和reduce函数计算字符串中的字母频率

R计算数据框中的百分比值

在python中绘制字符串值频率

首先按频率对字符串中的字符进行排序,然后按字母顺序排序

python求每个 数字出现的频率 我有一个list: 2 2 5 7 4 2 我想要gener

Java 字符串计算频率出现最高的字符