python 判断字符串是否为数字_Python核心知识系列:数字与字符串类型

1e380a9332f5b0a55b27b21f4af4b164.png

​学习任何一种编程语言时首先要对它的数据类型有所了解,从本篇开始会对 Python 中的常见数据类型的基本概念和操作进行介绍。

Python中有6种标准的数据类型:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)。

上述6种数据类型可分为两类:

  • 不可变数据类型:数字、字符串、元组。
  • 可变数据类型:列表、集合、字典。

什么是不可变数据类型和可变数据类型,在下面具体的示例中再介绍,会有更清晰的认识。

本文介绍两个最基本的数据类型:数字和字符串。

数字

1 基本概念

Python 的数字类型中包括:整型(int)、浮点型(float)、布尔型(bool)、复数(complex)。其中,布尔型:表示真(True)、假(False)。0和空都表示False,如 ' '、[ ]、{ }、None。非空表示True。

2 常用操作

数值运算:加、减、乘、除、整除、求余(+、-、 *、 /、 //、 %)

10、2、8、16进制表示与转换:

二进制:用0b表示,如0b10表示10进制的2。

八进制:用0o表示,如0o10表示10进制的8。

十六进制:用0x表示,如0x10表示10进制的16。

bin( ):转换为二进制。

int( ):转换为十进制。

hex( ):转换为十六进制。

oct( ):转换为八进制。

内建函数(BIF):

abs():取绝对值

ceil() / floor():向上 / 向下取整

round():四舍五入

min() / max():最小值/最大值

下面给出了数字类型的知识点导图:

9189e65462a6ecffe9196cb22c720417.png

最后,我们再看一下,为什么说数字是不可变类型。每种数据类型对应的变量自创建时就会被分配一个内存地址,当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,就称不可变数据类型。

与不可变类型相对的,当数据类型的对应变量的值发生了改变,它对应的内存地址不发生改变,则称为可变数据类型。

例如:给变量 num 赋值,然后改变 num 的值,发现前后两次输出的变量值都为整型,内存地址发生改变。

id():获取对象的内存地址

type():查看对象的类型

num = 2
print(id(num), type(num))
num = 3
print(id(num), type(num))
# 输出
140720244078400 <class 'int'>
140720244078432 <class 'int'>

字符串

1 基本概念

字符串是一个序列,可以使用单引号('')、双引号("")或三引号(''' ''',""" """)创建。此外,三引号可定义多行字符串。

字符串中可包含转义字符,如换行(n )、单引号(' )。

非转义的原始字符串:字符串前加r,例如:print(r'hellonworld'),换行符 n 也会被输出,而不会产生换行。

unicode 字符串:在字符串前加u,对字符串进行 unicode 编码。在 Python3 中,字符串默认是 unicode 编码,中文字符串前无需加u,而对于 Python2,默认编码是ascii,在中文前需要加u。

2 常用操作

常用操作主要有以下几点:

  • 字符串拼接/合并
  • 字符串复制
  • 字符串索引/切片
  • 字符串的替换
  • 字符串的匹配查找
  • 去除字符串两侧指定字符
  • 字符串按指定字符分隔
  • 计算字符串的长度
  • 统计指定字符串出现的次数
  • 判断是否包含指定字符串
  • 字符串转换大小写
  • 格式化字符串

下面通过具体示例依次介绍各种操作。

字符串拼接/合并

使用 “+”合并字符串

s = "hello" + " " + "world!"
print(s)
# 输出
hello world!

使用 join() 方法:str.join(seq), str为连接符,seq为字符串 或 字符串为元素构成的序列。

s1 = 'python'
s2 = ['I', 'love', 'python']
print('_'.join(s1))
print('_'.join(s2))
# 输出
p_y_t_h_o_n
I_love_python

字符串复制

s = 'python'
print(s*3)
# 输出
pythonpythonpython

字符串索引/切片

通过下标索引,默认从0开始。

s = 'python'
result = s[1]
print(result)
# 输出
y

切片 [start:stop:step] start:开始索引,stop:结束索引,step: 步长,默认值为1。

s = 'python'
r1 = s[1:] # 从开始索引截取到字符串的最后
r2 = s[:3] # 从开头截取到结束索引之前
r3 = s[1:3] # 从开始索引截取到结束索引之前
r4 = s[:] # 截取所有字符串
r5 = s[::-1] # 字符串反转
print('r1=%s, r2=%s, r3=%s, r4=%s, r5=%s'% (r1, r2, r3, r4, r5)) # 格式化输出
# 输出
r1=ython, r2=pyt, r3=yt, r4=python, r5=nohtyp

字符串的替换

"""
功能:将字符串str中的子字符串old用新子字符串new替换。
语法:str.replace(old, new[, max])
参数:str为原始字符串,old为将被替换的子字符串,new为新字符串,max表示最多替换的次数,可选。
返回:返回替换后的新字符串。
"""
s1 = 'I love python!'
r1 = s1.replace('python', 'java')
s2 = 'abcabcabcabc'
r2 = s2.replace('ab', 'AB', 3)
print(r1)
print(r2)
# 输出
I love java!
ABcABcABcabc

字符串的匹配查找

"""
功能:检测字符串中是否包含子字符串
语法:str.find(substr, beg=0, end=len(string))
参数:substr为待查找的字符串,beg为开始索引,默认为0,end为结束索引,默认为字符串的长度。
返回:如果包含则返回子字符串开始的索引值,否则返回-1。
"""
s = 'Always on the road.'
r1 = s.find('road', 7, len(s))
r2 = s.find('Road')
print(r1, r2)
# 输出
14 -1

与 find() 类似,index() 也可以检测字符串中是否包含子字符串。不同的是,当查询不到待匹配的字符串时,会抛出异常。

"""
功能:检测字符串中是否包含子字符串
语法:str.index(substr, beg=0, end=len(string))
参数:substr为待查找的字符串,beg为开始索引,默认为0,end为结束索引,默认为字符串的长度。
返回:如果包含子字符串返回开始的索引值,否则抛出异常。
"""
s = 'Always on the road.'
r1 = s.index('road', 7, len(s))
print(r1)
r2 = s.index('Road')
# 输出
14
ValueError: substring not found

去除字符串两侧指定字符

"""
功能:用于移除字符串头尾指定的字符
语法:str.strip([char])
参数:chars为待移除的字符序列
返回:移除字符串头尾指定的字符生成的新字符串。
"""
s1 = ' Always on the road.tn'
r1 = s1.strip()
print(r1)
s2 = 'abcdcdab'
r2 = s2.strip('ab')
print(r2)
# 输出
'Always on the road.'
'cdcd'

与 strip() 类似的还有 lstrip()、rstrip() 两个函数,lstrip() 用于去掉左侧的指定字符,rstrip() 用于去掉右侧的指定字符。

字符串按指定字符分隔

"""
功能:通过指定分隔符对字符串进行切片。
语法:str.split(substr="", num=str.count(substr))
参数:substr为分隔符,默认为所有的空字符,包括空格、换行(n)、制表符(t)等,num为分隔次数,默认为-1,即分隔所有。
返回:返回分割后的字符串列表。
"""
s1 = ' Always on the road.tn'
r1 = s1.split()
print(r1)
s2='abcdabcdabcd'
r2 = s2.split('c', 2)
print(r2)
# 输出
['Always', 'on', 'the', 'road.']
['ab', 'dab', 'dabcd']

计算字符串的长度

s = 'Always on the road.'
r = len(s)
print(r)
# 输出
19

统计指定字符串出现的次数

"""
功能:用于统计字符串里某个字符出现的次数。
语法:str.count(substr, start=0,end=len(str))
参数:substr为待匹配的子字符串,start和end分别为字符串开始、结束搜索的位置。
返回:返回子字符串在字符串中出现的次数。
"""
s = 'Always on the road.'
r = s.count('a')
print(r)
# 输出
2

判断是否包含指定字符串

s = 'Always on the road.'
print('road' in s)
print('road' not in s)
# 输出
True
False

字符串转换大小写

将每个单词首字母变为大写: title()

s = 'I love python!'
r = s.title()
print(r)
# 输出
I Love Python!

字符串字母全部转为小写/大写: lower()/upper()

s = 'I love python!'
r1 = s.lower()
r2 = s.upper()
print(r1)
print(r2)
# 输出
i love python!
I LOVE PYTHON!

字符串首字母大写: capitalize()

s = 'i love python!'
r = s.capitalize()
print(r)
# 输出
I love python!

大小写互换: swapcase()

s = 'abcABC'
r = s.swapcase()
print(r)
# 输出
ABCabc

格式化字符串

%-格式化

"""
格式化符号:
%s:格式化字符串
%d:格式化整数
%f:格式化浮点数,可指定小数点后的精度
"""
s = ("lin", '1001')
print("姓名:%s, 工号:%s"%s)
# 输出
姓名:lin, 工号:1001

str.format()-格式化

# 按默认位置填充
print("{} {}".format("hello", "world") )
# 输出
hello world
# 按位置索引填充
print("{1} {0}".format("world", "hello"))
# 输出
hello world
# 通过参数填充
print("姓名:{name}, 学号:{ID}".format(name="张三", ID="1002"))
# 输出
姓名:张三, 学号:1002
# 通过字典设置参数
data = {"name": "张三", "ID": "1002"}
print("姓名:{name}, 学号:{ID}".format(**data))
# 输出
姓名:张三, 学号:1002

f-string 格式化

"""
是Python3.6新引入的一种字符串格式化方法
在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段。
在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
"""
# 解析变量
name = "张三"
ID = "1002"
print(f"姓名: {name}, 学号: {ID}")
# 输出
姓名: 张三, 学号: 1002
# 解析字典
data = {"name": "张三", "ID": "1002"}
print(f"姓名: {data['name']}, 学号: {data['ID']}")
# 输出
姓名: 张三, 学号: 1002
# 表达式
s1 = 'hello'
s2 = 'world'
print(f'{s1+s2}')
# 输出
helloworld

最后,附上字符串相关知识的思维导图:

e444221550af89572df8a7dd189ec5ed.png

—END—

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值