计算 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】:
这些是内置函数 index 和 count。您可以在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函数计算字符串中的字母频率