我需要创建一个函数来计算一段文本中输入字母的频率...
e.g。
import urllib
pieceoftext =urllib.urlopen(blahblahblah).read()
def frequency(char):
count = 0
for character in pieceoftext:
count += 1
return count
...
任何帮助将不胜感激:)
答案 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])
是我怎么做的......如果我不打算使用计数