初学者的话确实可以通过 ascii table?来判断字母和数字的区别.Python?里面有两个内置函数 ord?和 chr?可用.
ascii table
通过判断其字的范围来确定是字母还是别的.确实可以达到你现在想要的目的.
不过我个人建议是,暂时不用太在意这种问题.这个也不是解决这些问题的理想方法.
当你以后学会使用正则表达式之后,回头看这个问题就十分简单了!
正则表达式才是解决字符串这类问题更理想的方法.这种方式的优势和能力之强等你学习到后就知道了.
第一段:实现思路
需要统计字符串中每个字母出现的次数;如果字母是第一次出现的话,就把次数置为1,如果字母非第一次出现的话,就需要在原字母已保存次数上加1;仔细思考一下,需要保存字母和出现次数,然后相同字母出现多次的话,需要在原字母保存的次数加1;字典这种数据类型可以实现这种需求.
第二段:代码实现
统计字符串每个字母出现次数源码:
def count_each_char(str):
dict = {}
for i in str:
if i not in dict:
dict[i] = 1
else:
dict[i] ◆= 1
return dict
if __name__ == "__main__":
res = count_each_char("abdefdcsdf")
print(res)
简化版统计字符串字母出现次数源码:
dict[i] 表示的是字典中字母对应的value(出现次数)
dict.get(i,0)◆1 表示的是从字典获取字母,如果字典中没有查找到对应字母,则将字母i,次数1存入字典
dict[i]=dict.get(i,0)◆1
运行结果:
根据字母出现次数倒序排列源码:
def count_each_char_sort_value(str):
dict[i] = dict.get(i, 0) ◆ 1
# sorted 方法会生成一个排序好的容器
# operator.itemgetter(1) 获取字典第一维的数据进行排序
# reverse 表示倒序排列
dict=sorted(dict.items(),key= operator.itemgetter(1),reverse=True)
res = count_each_char_sort_value("abdefdcsdf")
从运行结果可以看出,通过调用sorted方法,已经根据指定的key进行倒序排序了
代码如下:
letter = 0
digital = 0
other = 0
for i in text:
if i.isalpha():
letter ◆= 1
elif i.isdigit():
digital ◆= 1
other ◆= 1
print('字母:{} 数字:{} 其他:{}'.format(letter,digital,other))
输出:
下面是Python内置关于判断字符串类型的方法介绍:
str.isalnum()
如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回?True?, 否则返回?False?. 如果?c.isalpha()?,?c.isdecimal()?,?c.isdigit()?,或?c.isnumeric()?之中有一个返回?True?,则字符◆◆c◆◆是字母或数字.
str.isalpha()
如果字符串中的所有字符都是字母,并且至少有一个字符,返回?True?,否则返回?False?.字母字符是指那些在 Unicode 字符数据库中定义为 "Letter" 的字符,即那些具有 "Lm"、"Lt"、"Lu"、"Ll" 或 "Lo" 之一的通用类别属性的字符. 注意,这与 Unicode 标准中定义的"字母"属性不同.
str.isascii()
str.isdecimal()
str.isdigit()
如果字符串中的所有字符都是数字,并且至少有一个字符,返回?True?,否则返回?False?. 数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字.这包括了不能用来组成 10 进制数的数字,如 Kharosthi 数. 严格地讲,数字是指属性值为 Numeric_Type=Digit 或 Numeric_Type=Decimal 的字符.
str.isidentifier()
如果字符串是有效的标识符,返回?True?,依据语言定义,?标识符和关键字?节.
调用?keyword.iskeyword()?来检测字符串?s?是否为保留标识符,例如?def?和?class.
用字符串count函数计算出现次数,防止重复,可以用字典来搜集结果:
代码
运行结果
代码:
string = "T-shirt"
letters = []
letters.append(chr(i))#A-Z
letters.append(chr(i))#a-z
num = 0
for i in string:
if i in letters:#如果是字母
? ? num ◆= 1
print(num)#输出num
运行效果:
备注:加粗部分的单词可以自己改.
解析:
通过ASCII码和chr函数查找到所有大小写字母,再逐一遍历单词,如果是字母就◆1个,这样就可以得到统计数据了.
以上就是土嘎嘎小编为大家整理的python统计字母函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!