Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?

Python015

Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?,第1张

初学者的话确实可以通过 ascii table 来判断字母和数字的区别。Python 里面有两个内置函数 ord 和 chr 可用。

ascii table

通过判断其字的范围来确定是字母还是别的。确实可以达到你现在想要的目的。

不过我个人建议是,暂时不用太在意这种问题。这个也不是解决这些问题的理想方法。

当你以后学会使用正则表达式之后,回头看这个问题就十分简单了!

正则表达式才是解决字符串这类问题更理想的方法。这种方式的优势和能力之强等你学习到后就知道了。

```python

# 假设要统计字符串s中指定字符c的个数

s = 'Hello World'

c = 'o'

# 方法1

count = 0

for i in s:

if i == c:

count += 1

print(count)

# 方法2

count = s.count(c)

print(count)

代码如下:

text = "Hello Python,Hello 2021."

letter = 0

digital = 0

other = 0

for i in text:

if i.isalpha():

letter += 1

elif i.isdigit():

digital += 1

else:

other += 1

print('字母:{} 数字:{} 其他:{}'.format(letter,digital,other))

输出:

字母:16 数字:4 其他:4

下面是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()

如果字符串为空或字符串中的所有字符都是 ASCII ,返回 True ,否则返回 False 。ASCII 字符的码点范围是 U+0000-U+007F 。

3.7 新版功能.

str.isdecimal()

如果字符串中的所有字符都是十进制字符且该字符串至少有一个字符,则返回 True , 否则返回 False 。十进制字符指那些可以用来组成10进制数字的字符,例如 U+0660 ,即阿拉伯字母数字0 。 严格地讲,十进制字符是 Unicode 通用类别 "Nd" 中的一个字符。

str.isdigit()

如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False 。 数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字。这包括了不能用来组成 10 进制数的数字,如 Kharosthi 数。 严格地讲,数字是指属性值为 Numeric_Type=Digit 或 Numeric_Type=Decimal 的字符。

str.isidentifier()

如果字符串是有效的标识符,返回 True ,依据语言定义, 标识符和关键字 节。

调用 keyword.iskeyword() 来检测字符串 s 是否为保留标识符,例如 def 和 class。