如何创建一个函数来计算python中一段文本中字符的频率?

时间:2014-04-08 22:40:25

标签: python function python-2.7

我需要创建一个函数来计算一段文本中输入字母的频率...

e.g。

import urllib

pieceoftext =urllib.urlopen(blahblahblah).read()

def frequency(char):
count = 0
for character in pieceoftext:
        count += 1
return count

...

任何帮助将不胜感激:)

5 个答案:

答案 0 :(得分:1)

如果你不想要两个参数,你可以改变它,但在这种情况下使用两个参数可能更好。

def frequency(c, sentence):
    count = 0
    for character in sentence:
        if (c.lower() == character.lower()):
            count += 1
    return count

>>>频率(' c',' ccc')

>>> 3

请注意,我使用lower()方法使比较不区分大小写。

答案 1 :(得分:1)

您可以在Counter模块中使用collections

import collections

def frequency(char, string):
    string = string.lower()
    count = collections.Counter(string)
    return count[char]

理想情况下,string = string.lower()应该省略,如果您愿意,您应该传递已经低位的字符串。

答案 2 :(得分:1)

def frequency(char, sentence):
    count = 0
    for k in list(sentence):
        if k == char:
            count+=1
    return count

运行如下:

frequency('t', 'the quick brown fox jumps over the lazy dog.')
2

list(sentence)获取句子中的每个单独的字符,我们使用for循环进行循环。然后我们检查字符是否是指定的字符,如果是,我们在变量count中添加一个字符。最后,我们返回count

正如@Hamatti所说,你不需要先转换成列表,所以这里是代码的简化版本:

def frequency(char, sentence):
    count = 0
    for k in sentence:
        if k.lower() == char.lower():
            count+=1
    return count

修改

如果句子是从网址导入为一段文本,请使用以下代码:

sentence = urllib.urlopen('myamazingurl.com').read()
def frequency(char, sentence):
    count = 0
    for k in sentence:
        if k.lower() == char.lower():
            count+=1
    return count

然后根据需要继续。所有这一切都是将变量sentence分配给url中的文本。您也可以在frequency函数中分配句子,如果您将始终从同一个URL中提取。为此,请使用以下代码:

def frequency(char):
    count = 0
    sentence = urllib.urlopen('myamazingurl.com').read()
    for k in sentence:
        if k.lower() == char.lower():
            count+=1
    return count

答案 3 :(得分:1)

pieceoftext.lower().count('t')

frequency = lambda c, s=pieceoftext: s.lower().count(c)
frequency('t')                  # returns 2
frequency('t', pieceoftext)     # returns 2
frequency('t', 'tttt')          # returns 4

答案 4 :(得分:1)

def frequency(c,sentance):
    return sum([c==ch for ch in sentance])

是我怎么做的......如果我不打算使用计数