如何统计字符串中的字符?(python)

2 投票
3 回答
38901 浏览
提问于 2025-04-18 00:23
# -*- coding:UTF-8 -*-

str= "Green tree"
scr= "e"

cstr= len(str)
n=0
a=0

while n < cstr:
    if str[n] == scr:
        print(len(scr))
    n=n+1

我需要在这个字符串 -str- 中计算字母 "e" 的数量,但当我运行这个脚本时,我得到的是

1
1
1
1

而不是 4。

这是什么问题呢?

3 个回答

0
scr= "e"
##
print(len(scr))

关于为什么会这样,它其实是在按照你的要求执行,输出的是变量scr的长度,而这个长度总是1。

最好使用str.count()这个方法,正如其他人提到的,或者你也可以自己手动增加一个计数器。

3

使用 count 方法

>>> st="Green tree"
>>> st.count('e')
4

如果你的 Python 的 count 方法坏了 ;-),你可以用一个 for 循环来解决:

st="Green tree"
tgt='e'
i=0
for c in st:
    if c==tgt: i+=1

print i 
# 4 

如果你真的想用 while 循环:

idx=0
i=0
while idx<len(st):
    if st[idx]==tgt: i+=1
    idx+=1

print i    

不过,既然是 Python,如果你的 count 方法坏了,更“Pythonic”的做法是用 sum 和生成器表达式:

>>> sum(1 for c in st if c=='e')
4
5

首先,不要把 str 用作变量名,这样会覆盖掉 Python 内置的名称。

如果你想计算字符串中的字符数量,可以直接使用 str.count() 方法:

>>> s = "Green tree"
>>> s.count("e")
4

如果你只是想知道为什么你现在的代码不工作,你会发现你打印了 1 四次,因为你找到了四个 'e' 的出现次数。每当找到一个出现时,你都在打印 len(scr),而这个值始终是 1

与其在你的 if 语句中打印 len(scr),不如增加一个计数器,用来记录找到的总出现次数。看起来你设置了一个变量 a,但没有使用它。因此,要让你的代码正常工作,最简单的修改就是这样做(不过如上所述,使用 str.count() 是更好的方法):

str= "Green tree"
scr= "e"

cstr= len(str)
n=0
a=0

while n < cstr:
    if str[n] == scr:
        a+=1
    n=n+1
print(a)

撰写回答