(1)字符串驻留
常量字符串只保留一份
c="dd#"#变量c使用了"dd#"的地址
d="dd#"#变量d也使用了"dd#"的地址
#可知"dd#"是同一个对象,故而以下输出为True
print(c is d)#True
(2)字符串比较和同一性
我们可以直接使用==、!=对字符串进行比较看是否含有相同的字符。
我们使用is not is,判断两个对象是否为同一对象,比较的是对象的地址,即id(obj1)是否和id(obj2)相等
a="aabbcc"
b="aabbcc"
print(id(a))#2197056354480
print(id(b))#2197056354480
print(a==b)#True
in、not in关键字,用于判断某个字符(子字符串)是否存在于字符串中
a="snjshddjhd"
print("dj"in a)#True
print("stun"in a)#False
format()的基本用法
format()的基本语法是通过{}和 :来代替以前的%
format()函数可以接受不限个数的参数,位置可以不按顺序。
我们可以通过{索引|}/{参数名} ,直接映射参数值,实现对字符串的格式化,非常方便。
a="名字是:{0},年龄是:{1},{0}是个好小伙"
b="名字是:{name},年龄:{age}"
e=b.format(age=16,name='高安安')
print(a.format("小狗",18))#名字是:小狗,年龄是:18
print(a.format("yy",99))#名字是:yy,年龄是:99
print(e)#名字是:高安安,年龄:16
需要注意的是,在我们代码的前两种写法里,必须严格按照顺序输入,而在第二种情况里由于使用了名字,即使不按照顺序输出,代码也会按照我们想要的效果执行
(1)填充常跟对齐一起使用
(2)^、<、>分别是居中、左对齐、右对齐,后面带宽度
(3):后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
a="{:*>8}".format("245")
print(a)#*****245
b="我是{0},我喜欢数字{1:*^8}".format("高安","666")
print(b)#我是高安,我喜欢数字**666***
浮点数通过f,整数通过d等等进行需要的格式化
a="我是{0},我的存款有{1:.2f}".format("高安",3000.283924)#.2f表示的是小数点后两位数字
print(a)#我是高安,我的存款有3000.28
(1){:.2f}保留小数点后两位
(2){:+.2f}带符号保留小数点后两位
(3){:.0f}不带小数
(4){:0>2d}数字补零(填充左边,宽度为2)
(5) {:x<4d}数字补零(填充右边,宽度为4)
(6) {:,}以逗号分隔的数字格式
(7) {:.2%}百分比格式
(8) {:.2e}指数记法
(9) {:10d}右对齐(默认,宽度为10)
(10) {:<10d}左对齐(宽度为10)
(11) {:^10d}中间对齐(宽度为10)
Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。
但有时候,我们确实需要原地修改字符串,可以使用io.StringIO对象或array模块。
import io
s="abcdefgh"
sio = io.StringIO(s)#sio就是可变字符串
print(sio)#<_io.StringIO object at 0x0000019B8670C820>
print(sio.getvalue())#abcdefgh
sio.seek(3)#指针到索引3这个位置
sio.write("***")
print(sio.getvalue())#abc***gh
与Java、C++等高级程序设计语言一样,Python语言同样也支持数据类型转换。如表
int(x[,base]) | 将x转换成一个整数 | list(s) | 将序列s转换成一个列表 |
long(x,[base]) | 将x转换为一个长整数 | set(s) | 转换为可变集合 |
float(x) | 将x转换到一个浮点数 | dict(d) | 创建一个字典。d必须是一个序列(key,value)元组 |
complex(real[,imag]) | 创建一个复数 | frozense(s) | 转换为不可变集合 |
str(x) | 将对象x转换为字符串 | chr(x) | 将一个整数转换为一个字符 |
repr(x) | 将对象x转换为表达式字符串 | unichr(x) | 将一个整数转换为Unicode字符 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 | ord(x) | 将一个字符转换为它的整数值 |
Complex(A) | 将参数转换为复数型 | hex(x) | 将一个整数转换为十六进制字符串 |
tuple(s) | 将序列s转换为一个元组 | oct(x) | 将一个整数转换为八进制字符串 |
字符串基本特点
字符串的本质是字符序列,Python不支持单字符类型,单字符也作为一个字符串使用。
注意:Python中的字符串是不可变的,我们无法对原字符串做任何修改,但可以将字符串的一部分复制到新创建的字符串以达到“看起来修改”的效果。
(1)引号创建字符串
我们可以通过单引号或双引号创建字符串。
使用单双引号的好处:可以创建本身就包含引号的字符串,而不使用转义字符。
连续三个单双引号可以帮助我们创建多行字符串,在长字符串中会保留原始的格式。
s='''
#I
# Love
#Dog
'''
d="yy是一只'小狗'可怜的小狗"
print(d)#yy是一只‘小狗’可怜的小狗或使用转义字符\'小狗\'为前面的小狗打上单引号
print(s)
#I
#Love
#Dog
(2)空字符串和len()函数
d='abc尚学堂'
print(len(d))#6
c=''
print(len(c))#0
(3)字符串的编码
Python3直接支持Unicode,可以表示世界上任何书面语言的字符。 Python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集。
使用内置函数ord()可以把字符转换成对应的Unicode码;
使用内置函数chr()可以把十进制数字转换成对应的字符