首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算每个字符类型的数目,并将结果显示为条形图。

计算每个字符类型的数目,并将结果显示为条形图。
EN

Stack Overflow用户
提问于 2020-03-29 04:08:44
回答 1查看 249关注 0票数 0

我试图使用Ascii字符集来计数每种字符类型的数量,以便“骄傲和偏见”the,并将结果显示为条形图。

这是我的导师提供的密码。

代码语言:javascript
复制
Max_ascii = 127
Min_ascii = 32
a_place = 97
z_place = 122
file = open('pride-and-prejudice.txt')
training = file.read()
int_text = []
maxchars = len(training)
int_text = np.zeros(maxchars)
i = 0
for letter in training:
    ascii_val = ord(letter)
    if (ascii_val >= Min_ascii) and (ascii_val <= Max_ascii):
        int_text[i] = ascii_val
        i+=1

counts = np.zeros(Max_ascii-Min_ascii+1)
num_chars = len(counts)
ascii_vals = np.arange(Min_ascii,Max_ascii+1,1)
i=0
for val in ascii_vals:
    counts[i] = np.sum(int_text==val)
    i+=1

plt.bar(np.arange(1,z_place-a_place+2,1),counts[a_place-Min_ascii:z_place-Max_ascii])
plt.show()

我的问题是这个代码的含义是什么?

代码语言:javascript
复制
counts[a_place-Min_ascii:z_place-Max_ascii]

我知道它会把字符从A数到Z,但是为什么它应该写'a_place-Min_ascii:z_place-Max_ascii‘呢?为什么“countsa_place:z_place”不起作用?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-29 05:19:50

我不知道你的导师在说什么,但我要说他/她有.有趣的编码风格。

我给你看点东西。除了你的家庭教师的最后两行外,所有这些都可以改写成这样:

代码语言:javascript
复制
from collections import Counter
from string import ascii_lowercase

with open('pride_and_predjudice.txt') as f:
    chars = Counter(char for line in f for char in line.lower())

chars = {char: chars[char] for char in ascii_lowercase}

此时,chars包含一个按字母顺序排列的dict (假设您使用的是python 3.6+),其中包含所有(小写)字母的计数。你应该能够做如下所示的事情来显示它:

代码语言:javascript
复制
plt.bar(np.arange(len(chars)), np.array(chars.values()))
plt.show()

玩这个,看看你是否取得了一些成功。祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60910074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档