python数据类型之字符串(二)

1.python 字符串说明

字符串或串(String)是由数字、字母、下划线组成的一串字符。字符串是python当中最常用的数据类型,我们用它来处理文本内容,字符串是字符的有序集合,可以使用一对单引号或一对双引号,或
者3对双引号来创建,python字符串的索引有正向索引和反向索引之分,通过索引你可以随机访问字符串。

2.python 字符串的创建

#coding=utf-8;
str1 = 'AABB ccdd';
str2 = "abc";
str3 = """abc
bde
fgh
""";
print(str1,type(str1),len(str1));
print(str2,type(str2),len(str2));
print(str3,type(str3),len(str3));

输出结果:

AABB ccdd <class 'str'> 9
abc <class 'str'> 3
abc
bde
fgh
<class 'str'> 15

上面分别用单引号,双引号,3对双引号各创建一个字符串,使用print函数输出这3个变量的内容以及他们的类型,及字符串长度。

2.1 python 三引号

Python 中三引号可以将复杂的字符串进行赋值。Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)

2.2 python 三引号实例

 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

一个典型的用例是,当你需要一块HTML或者SQL时,这时当用三引号标记,使用传统的转义字符体系将十分费神。

3.python字符串取值

python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头

 

 如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

例如:a="abcdefg",a[1:3],表示范围索引1到索引3这个范围内的字符,得到的结果是'bc', 这就是切片操作。

4.python字符串的运算

对于字符串,有以下运算

运算练习如下:

#coding=utf-8;
str1="ABCDEF";
str2='abcd';
str3="""12345xyz""";
print str1,type(str1),str2,type(str2),str3,type(str3);
# 字符串连接“+”
print str1+str2+str3;
# 字符串重复 *,从1开始
print str1*2;
# 通过索引访问字符串
print str3[2],str3[-2];
#切片操作,截取字符串范围
print str1[2:5],str1[-4:-2];
#成员运算符 - 如果字符串中包含给定的字符返回 True,否则返回false
print "x" in str3,"xyz" in str3,"xx" in str3;
#成员运算符 - 如果字符串中不包含给定的字符返回 True,否则返回false
print "yy"  not in str3 ,"y" not in str3;

运行结果:

ABCDEF <type 'str'> abcd <type 'str'> 12345xyz <type 'str'>
ABCDEFabcd12345xyz
ABCDEFABCDEF
3 y
CDE CD
True True False
True False

5.python字符串切片操作

python字符串切片操作是使用频率非常高的操作,它的一般模式是[start:end),左闭右开,索引为end的元素不会被截取,字符串切片操作会根据start和end的位置截取字符串并返回。

5.1切片操作如下

#coding=utf-8;
str1="abcde123xyz";
#1.指定开始位置和末尾位置
print str1[2:3];
print str1[-4:-3]; #反向索引,位置还是从左到右
print str1[5:-1];
#2.如果不指定结束位置,那么截取内容就是从开始位置到字符串末尾
print str1[5:];
print str1[-2:];
#3.如果不指定开始位置,那么开始位置就是0
print str1[:3];
print str1[:-6];
#4.切片操作允许索引越界
print len(str1);
print str1[:20];
#字符串str1的长度是11,索引从0开始,最大索引为10,20显然已经超出了合理范围.
#专业名词叫越界,但程序并没有报错,这是切片操作的一个特点,当索引越界时,切片操作将10作为了结束位置。
#5.指定切片隔离
print str1[::2];
print str1[::-2];
print str1[::-1]; #表示从索引0到字符串默认进行切片,处理的方式是反向间隔1个索引位置进行切片处理,这样就得到了字符串的翻转结果
#[]操作符内有两个:, 这两个要分开理解,对于第一个,我们将其理解为设置索引,:左右两侧都没有明确写明索引,
# 这就相当于既没有指定开始索引,也没有指定结束索引,因此等价于开始索引从0开始,结束索引就是字符串的末尾。
#第二个: 的作用是设置切片的间隔,每隔2个索引做一次切片处理,这样就最终得到了'ace2xz', 第2个: 设置切片间隔,也可以是负数,表示反向间隔。

运行结果:

c
3
123xy
123xyz
yz
abc
abcde
11
abcde123xyz
ace2xz
zx2eca
zyx321edcba

切片小练习:

#coding=utf-8;
str1="ABCDE"
str2="abcde"
str3="12ab34"
#取值
print(str1[-1],str1[0])
#切片
print(str1[1:2],str1[-2:-1])
print(str1[1:20]) #切片可以允许越界
print(str2[1:],str2[:3],str1[::2])
#字符串连接 +
print(str1+str2+str3)
#重复字符串 *
print(str1*3)
#成员运算符 in
print("A" in str1,"X" in str1)
#成员运算符 not in
print("R" not in str1,"B" not in str1)

 运行结果:

E A
B D
BCDE
bcde abc ACE
ABCDEabcde12ab34
ABCDEABCDEABCDE
True False
True False

6.python字符串格式化

6.1 %格式化字符串

 测试如下:

#coding=utf-8;
a='我是%s人,我属于第%d区,%c,π的值大约是:%e,大炮的价格是:%f';
print a%('',3,92,3.1415,2.13);

运行如下:

我是黑人,我属于第3区,\,π的值大约是:3.141500e+00,大炮的价格是:2.130000

使用% 虽然可以格式化,但我并不推荐你用这种方法,因为这样写出来的代码可阅读性较差,更加友好的方式是使用字符串的format方法

6.2 format

格式化,推荐使用字符串format方法

string = "I like {color}".format(color='red')
print(string)

string = "我喜欢 {color},{color}让人安静".format(color='绿色')
print(string)

string = "{course}考了90分,{name}非常高兴"
string = string.format(course="语文", name="李雷")
print(string)

运行结果:

I like red
我喜欢 绿色,绿色让人安静
语文考了90分,李雷非常高兴

字符串里希望被替换的内容,用大括号包裹起来,在format方法的参数里,你需要设置替换的方法,比如在第二个例子中,设置color = '绿色', 那么字符串里,所有的{color}都会被替换成绿色。

使用format方法,使得代码看起来更加语义明确,需要被填充的地方将由什么数据填充一清二楚,而如果使用% ,你不得不仔细核对每一处替换与数据的对应关系,当字符串有很多处需要替换填充时,这种核对将变成灾难。

6.3 f-string

f-string 是python3.6加入的一种新技术,这种技术称之为字面量格式化字符串。

color = '红色'
string = f'我喜欢{color}'
print(string)

info = {'languge': 'python', 'site': 'http://www.coolpython.net'}
print(f"我正在学习{info['languge']}, 使用的教程网址是{info['site']}")

这种技术,会自动将前面的变量内容填充到字符串中以达到格式化字符串的目的。

8.字符串方法

见python练习题中。

7.字符串实例

8.unicode 字符串

Python 中定义一个 Unicode 字符串和定义一个普通字符串一样简单

8.1 unicode 字符串实例

9.字符串内置函数

 

posted @ 2022-09-06 10:36  家乐福的搬砖日常  阅读(258)  评论(0编辑  收藏  举报