例如,假设我想列出一个字符串中每个字母的频率。最简单的方法是什么?
这是我在想的一个例子…问题是如何使allTheLetters等于所说的字母,而没有allTheLetters =“ abcdefg …
xyz”之类的东西。在许多其他语言中,我可以只做字母+ +来增加字母的顺序,但是到目前为止,我还没有找到在python中做到这一点的方法。
def alphCount(text):
lowerText = text.lower()
for letter in allTheLetters:
print letter + ":", lowertext.count(letter)
您所问的问题(如何遍历字母)与您要解决的问题(如何计算字符串中字母的频率)不是同一问题。
您可以使用string.lowercase,如其他张贴者所建议的:
import string
allTheLetters = string.lowercase
要以“习惯”的方式进行处理,将字母视为数字,可以使用“ ord”和“ chr”功能。绝对没有理由完全做到这一点,但也许它更接近于您实际试图找出的结果:
def getAllTheLetters(begin='a', end='z'):
beginNum = ord(begin)
endNum = ord(end)
for number in xrange(beginNum, endNum+1):
yield chr(number)
您可以说它做对了,因为此代码显示True
:
import string
print ''.join(getAllTheLetters()) == string.lowercase
但是,要解决您实际上要解决的问题,您想使用字典并随身收集字母:
from collections import defaultdict
def letterOccurrances(string):
frequencies = defaultdict(lambda: 0)
for character in string:
frequencies[character.lower()] += 1
return frequencies
像这样使用:
occs = letterOccurrances("Hello, world!")
print occs['l']
print occs['h']
这将分别打印“ 3”和“ 1”。
请注意,这也适用于unicode:
# -*- coding: utf-8 -*-
occs = letterOccurrances(u"héĺĺó, ẃóŕĺd!")
print occs[u'l']
print occs[u'ĺ']
如果您要尝试使用unicode的另一种方法(增加每个字符),您将需要等待很长时间。有数百万个unicode字符。
要实现以下原始功能(按字母顺序打印每个字母的计数):
def alphCount(text):
for character, count in sorted(letterOccurrances(text).iteritems()):
print "%s: %s" % (character, count)
alphCount("hello, world!")
问题内容: 如何遍历Java中的字符串? 我正在尝试使用foreach样式进行循环 问题答案: 如果要使用增强循环,可以将字符串转换为charArray
问题内容: 我想遍历s1以确保s1中的每个字符都包含在s2中。 问题答案:
问题内容: 我有一个带有一些十六进制数字的文本文件,我正在尝试将其转换为十进制。我可以成功转换它,但似乎在循环存在之前它会读取一些不需要的字符,因此我遇到了以下错误。 我的代码如下 每个十六进制数字都在新行中输入 问题答案: 追溯表明文件末尾可能有一个空行。您可以这样解决: 另一方面,最好使用代替。不要忘记关闭文件,或者更好地使用该文件来关闭它们:
问题内容: 我有嵌套的字典: 给出的 -所有的一个像来。 导航到正确词典的最简单方法是什么? 就像如果给定的那样,它应该到达字典 非xml方法,请。 编辑(1): 筑巢之间到的水平,但我知道我之前解析嵌套。 Edit(2) :修复了代码。 编辑(3):再次修复了字符串值的代码。请原谅造成的混乱。我希望这是最终的:) 问题答案: 您的结构不规则。这是带有遍历子词典的 Visitor 函数的版本。 您
问题内容: 我在寻找一个struct的字符串字段遍历,所以我可以做一些清理/验证(与,等)。 现在,我有一个混乱的开关盒,它并没有真正的可扩展性,而且由于这并不是我的应用程序(Web表单)的热点,因此在这里利用杠杆作用似乎是一个不错的选择。 我对于如何实现此功能有点障碍,反射文档对我来说有点困惑(我一直在研究其他一些验证包,但是它们太笨重了,我正在使用大猩猩/模式已用于解组部分): 遍历该结构 对