while - python循环10次




如何迭代Python中的字符串? (7)

作为一个例子,可以说我想列出字符串中每个字母的字母的频率。 什么是最简单的方法呢?

这是我想到的一个例子...问题是如何使allTheLetters等于所说的字母,而不像allTheLetters =“abcdefg ... xyz”。 在许多其他语言中,我可以只写字母++,然后按字母顺序递增,但是到目前为止,我还没有碰到过用python做这个的方法。

def alphCount(text):
  lowerText = text.lower()
  for letter in allTheLetters:  
    print letter + ":", lowertext.count(letter)

问题是如何使allTheLetters等于说没有像allTheLetters =“abcdefg ... xyz”

这实际上是由字符串模块提供的,它不像你自己手动输入;)

import string

allTheLetters = string.ascii_lowercase

def alphCount(text):
  lowerText = text.lower()
  for letter in allTheLetters:  
    print letter + ":", lowertext.count(letter)

主要问题是“遍历字母表”:

import string
for c in string.lowercase:
    print c

如何以一定的效率获得字母频率,而不用计算非字母字符:

import string

sample = "Hello there, this is a test!"
letter_freq = dict((c,0) for c in string.lowercase)

for c in [c for c in sample.lower() if c.isalpha()]:
    letter_freq[c] += 1

print letter_freq

你的意思是使用:

import string
string.ascii_lowercase

然后,

counters = dict()
for letter in string.ascii_lowercase:
    counters[letter] = lowertext.count(letter)

所有的小写字母都被计算在内,遗漏的计数器将会有零值。

使用发电机:

counters = 
    dict( (letter,lowertext.count(letter)) for letter in string.ascii_lowercase )

如果你只是想做一个字符串的频率计数,试试这个:

s = 'hi there'
f = {}

for c in s:
        f[c] = f.get(c, 0) + 1

print f

这就是我所做的:

import string
for x in list(string.lowercase):
    print x

像这样的东西?

for letter in range(ord('a'), ord('z') + 1):
  print chr(letter) + ":", lowertext.count(chr(letter))

(我不会说Python,请原谅我的语法错误)


只要使用:

import string
string.lowercase  
string.uppercase

要么

string.letters[:26]  
string.letters[26:]




python