Python入门3——编程的基本概念(2)字符串

一、字符串驻留机制和字符串比较

(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、填充和对齐

(1)填充常跟对齐一起使用

(2)^、<、>分别是居中、左对齐、右对齐,后面带宽度

(3):后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

a="{:*>8}".format("245")
print(a)#*****245
b="我是{0},我喜欢数字{1:*^8}".format("高安","666")
print(b)#我是高安,我喜欢数字**666***

2、数字格式化

浮点数通过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()可以把十进制数字转换成对应的字符

你可能感兴趣的:(python)