如何统计字符串中的字符?(python)
# -*- 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)