无法与第一个字母与A-Z字母表进行比较

时间:2016-07-25 17:20:00

标签: python-2.7 string-comparison word-count

我要做的是比较每个单词的第一个字母和 小写字母a-z字母和打印(类似于word_frequency)有多少 一个单词以字母表中的每个字母开头 (比如这个)

a = 0 b = 2, c = 0, d = 2 ------------ y = 1, z = 0

但是我无法通过Counter找到这样做的方法,或者发现任何对我有用的东西(初学者)。我的想法是

    for w in word_count:
        l_freq = []
        l_freq.append(w[0])

然后比较反击它?但不确定如何比较整个字母而不仅仅是字符串中的字母?

另外,有没有办法打印频率清洁器?没有计数器和括号出现?

from collections import Counter

def function():
    string = "This is a string written in python."
    word_count = string.split()

    char_count = 0

    for char in string:
        if char != " " and char != ".":
            char_count += 1

    word_freq = Counter(word_count)

    print "Word count:  " + str(len(word_count))
    print "Average length of word: " + str(char_count / len(word_count))
    print ""
    print "Word frequency: "
    print word_freq

1 个答案:

答案 0 :(得分:0)

假设我们有一些像这样的测试数据:

In [1]: test_data = '''
   ...: hello
   ...: hi
   ...: goodbye
   ...: bye
   ...: Bye!
   ...: lol
   ...: lmao
   ...: rofl
   ...: '''

要计算每个单词的第一个字母,你可以这样做:

counter = Counter(w[0] for w in test_data.split())

你基本上在做什么。要获得您想要的预期输出想想,您只需要将每个小写字母与其计数相关联,如此(import string,如果您还没有):

for letter in string.ascii_lowercase:
    print letter, '=', counter[letter]

我展示的测试数据为您提供:

a = 0
b = 1
c = 0
d = 0
e = 0
f = 0
g = 1
h = 2
i = 0
j = 0
k = 0
l = 2
m = 0
n = 0
o = 0
p = 0
q = 0
r = 1
s = 0
t = 0
u = 0
v = 0
w = 0
x = 0
y = 0
z = 0