Python 打基础系列二 字符串(二)

您所在的位置:网站首页 python输出list元素换行 Python 打基础系列二 字符串(二)

Python 打基础系列二 字符串(二)

2023-03-14 22:14| 来源: 网络整理| 查看: 265

本文案的整理,出于对自己日常学习的整理,小编也在努力学习,有错的地方希望大家留在评论区,有问题也可以加我QQ1300521747。除此之外,小编为了强化自己的学习,特地提供了很多案例和问题供大家学习和思考。

五、字符串的切片

字符串的切片看上去非常复杂,其实很简单,分为下面几种

首先理解,字符串中每个字符都分配一个数字索引,第一个索引是0,第二个索引是1,依此类推。

1、获取单个字符

str[index], index为下标索引,从0开始,如果索引为负数则是倒着开始

print("Hello"[0]) # 获取第一个字符,字符获取从0开始,第二个字符为1

# 字符串的下标计数从0开始,它是一个标记特殊的list(数据结构会讲到)

print("Hello"[2]) # 获取第三个字符

print("Hello"[-1]) # 获取倒数第一个字符,使用负数表示获取倒数第几个字符

2、获取多个字符

str[start:end] #读取索引start开始到索引为end-1 结束的字符 。

w = 'woodman good!'

print(w[1:3]) # 获取索引1到2的字符 输出结果:oo

print(w[:4]) # 获取前4位

print(w[5:]) # 获取从索引号5开始后面的字符串 输出结果:an good!

print(w[:]) # 获取整个字符串

print(w[5:-1]) # 获取从索引号5开始后面的字符串,不包括最后一位。 输出结果:an good

print(w[-5:-1]) # 获取倒数第5位到倒数第1位 输出结果:good

3、通过步长截取(自动化中没什么用)

str[start:end:step] #读取索引start开始每相隔step读取字符直到索引为end-1 结束

w = 'woodman good!'

print(w[1:10:2]) # 表示从第二个字符开始截取,间隔2个字符取一个

#输出结果:oda o

# 自己尝试一下索引为负数的

4、拓展

字符串切片有几种特殊的用法

w = 'woodman good!'

print(w[::2]) # 隔两个截取一个字符串

#输出结果:womngo!

print(w[::-1]) # 字符串倒叙,这个是比较有意思的

#输出结果:!doog namdoow

六、字符串函数

1、常用字符串函数

# 前面4个要牢记,百分百用到

string = ' 我是个木头人,我是个大帅哥 '

string.replace('帅哥', '美女') # 替换字符串,帅哥替换从美女

string.strip() # 去除左右空格

string.split(',') # 拆分字符串返回list

string.find(',') # 查找字符串,返回索引号

string = "I'am woodman"

print(string.upper()) # 将字符串全部转为大写

print(string.lower()) # 将字符串全部转为小写

print(string.title()) # 将字符串单词的第一个字母转为大写,其它字母小写

注意:所有的字符串函数都是有返回值的,它不是对原有字符串操作,你需要一个变量来接收你处理后的字符串。

如:a=string.strip(),string.strip()得到的值传递给a,但是string的值没有被改变。

2、字符串函数大全(新手快速略过,有些的知道有这个函数就可以,用的时候查资料)

#字母处理

1.string.capitalize()

#首字母大写,其他小写

2.string.title()

返回元字符串,且将字符串第一个字母转为大写,其它字母小写

3.string.swapcase() #颠倒字母大小写

用于对字符串的大小写字母进行转换,小写字符转为大写,大写字母转为小写

4.string.upper()

将字符串全部转为大写

5.string.lower()

将字符串全部转为小写

#去除空格或者指定字符串

1.string.strip([string])

去除字符串中首尾的字符串,不带参数默认去除空

2.string.lstrip([string])

去除字符串左边字符串,不带参数默认去除空格

3.string.rstrip([string])

去除字符串右边字符串,不带参数默认去除空格

七、格式化对齐

1.string.center(width[, fillchar])

返回一个原字符串居中对齐,width为总长度两边用一个字符fillchar填充,如果指定的长度小于原字符串的长度则返回原字符串。

注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常

2.string.ljust(width[, fillchar])

返回原字符串左对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于原字符串的长度则返回原字符串。注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常

3.string.rjust(width[, fillchar])

返回原字符串右对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于字符串的长度则返回原字符串。注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常

4.string.zfill()

返回指定长度的字符串,原字符串右对齐,前面填充0

on格式化字符串(格式化输出)转换说明符解释%d、%i转换为带符号的十进制整数%o转换为带符号的八进制整数%x、%X转换为带符号的十六进制整数%e转化为科学计数法表示的浮点数(e 小写)%E转化为科学计数法表示的浮点数(E 大写)%f、%F转化为十进制浮点数%g智能选择使用 %f 或 %e 格式%G智能选择使用 %F 或 %E 格式%c格式化字符及其 ASCII 码%r使用 repr() 函数将表达式转换为字符串%s使用 str() 函数将表达式转换为字符串

【实例】输出一个整数:

age = 8

print("我已经%d岁了!" % age)

运行结果:我已经8岁了!

说明:在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%d说明符,它最终会被后面的 age 变量的值所替代。中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。当然,格式化字符串中也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )包围起来。请看下面的例子:

name = "C语言中文网"

age = 8

url = "http://c.biancheng.net/"

print("%s已经%d岁了,它的网址是%s。" % (name, age, url))

运行结果:C语言中文网已经8岁了,它的网址是http://c.biancheng.net/。

总之,有几个占位符,后面就得跟着几个表达式。

指定最小输出宽度

当使用表1中的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):

· %10d 表示输出的整数宽度至少为 10;

· %20s 表示输出的字符串宽度至少为 20。

请看下面的演示:

n = 1234567

print("n(10):%10d." % n)

print("n(5):%5d." % n)

url = "http://c.biancheng.net/python/"

print("url(35):%35s." % url)

print("url(20):%20s." % url)

运行结果:

n(10): 1234567.

n(5):1234567.

url(35): http://c.biancheng.net/python/.

url(20):http://c.biancheng.net/python/.

说明:从运行结果可以发现,对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出

你看,这里指定的只是最小宽度,当数据的实际宽度足够时,指定的宽度就没有实际意义了。

指定对齐方式

默认情况下,print() 输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python 允许在最小宽度之前增加一个标志来改变对齐方式,Python 支持的标志如下:

Python 支持的标志标志说明-指定左对齐+表示输出的数字总要带着符号;正数带+,负数带-。0表示宽度不足时补充 0,而不是补充空格。

几点说明:

· 对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。

· 对于小数,以上三个标志可以同时存在。

· 对于字符串,只能使用-标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。

请看下面的代码:

n = 123456

# %09d 表示最小宽度为9,左边补0

print("n(09):%09d" % n)

# %+9d 表示最小宽度为9,带上符号

print("n(+9):%+9d" % n)

f = 140.5

# %-+010f 表示最小宽度为10,左对齐,带上符号

print("f(-+0):%-+010f" % f)

s = "Hello"

# %-10s 表示最小宽度为10,左对齐

print("s(-10):%-10s." % s)

运行结果:

n(09):000123456

n(+9): +123456

f(-+0):+140.500000

s(-10):Hello .

指定小数精度

对于小数(浮点数),print() 还允许指定小数点后的数字位数,也即指定小数的输出精度。

精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度。具体格式如下:

%m.nf%.nf

m 表示最小宽度,n 表示输出精度,.是必须存在的。

请看下面的代码:

f = 3.141592653

# 最小宽度为8,小数点后保留3位

print("%8.3f" % f)

# 最小宽度为8,小数点后保留3位,左边补0

print("%08.3f" % f)

# 最小宽度为8,小数点后保留3位,左边补0,带符号

print("%+08.3f" % f)

运行结果:

3.142

0003.142

+003.142

#替换

1.string.replace(old, new[, count])

用新的字符替换老字符,还可以指定替换的个数,默认全部替换

2.string.expandtabs([n])

将字符串中(tab符号)\t转换成n个空格

#字符串搜索

1.string.find(sub [,start [,end]])

返回sub字符串第一次出现的索引位置,可以通过start和stop参数设置搜索范围,如果未找到sub时返回-1

2.string.rfind(sub [,start [,end]])

返回sub字符串最后一次出现的索引位置,如果没有匹配项则返回-1,可以通过start和stop参数设置搜索范围

3.string.index(sub [,start [,end]])

类似于string.find()方法。注意:未找到sub时会报出异常

4.string.rindex(sub [,start [,end]])

类似于string.rfind()方法。注意:未找到sub时会报出异常

#字符串分割

1.string.split([sep [,maxsplit]])

用来根据指定的分隔符将字符串进行分割,不包含分隔符,结果存为列表,不指定sep时,默认将将空格作为分隔符

2.string.partition(sep)

用来根据指定的分隔符将字符串进行分割,分割点为首次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则后面2个元素为空

3.string.rpartiton()

用来根据指定的分隔符将字符串进行分割,分割点为最后一次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则前面2个元素为空

#字符串判断

1.string.isupper()

返回字符串中是否全为大写 --> True/False

2.string.islower()

返回字符串中是否全为小写 --> True/False

3.string.isdigit()

返回字符串中是否只包含数字 --> True/False

4.string.isalpha()

返回字符串中是否只包含字母 --> True/False

5.string.isalnum()

返回字符串中是否只包含字母或数字 --> True/False

6.string.isspace()

返回字符串中是否只包含空格(tab也算空格) --> True/False

7.string.istitle()

返回字符串中首字母是否大写 --> True/False

8.string.startswith(prefix[, start[, end]])

返回字符串是否以某字符串开始,可以通过start和stop参数设置搜索范围

9.string.endswith(suffix[, start[, end]])

返回字符串是否以某个字符串结束 可以通过start和stop参数设置搜索范围

#其它

1.string.count(sub[, start[, end]])

计数字符串中某子集的数量,可以通过start和stop参数设置搜索范围

2.len(string)

获取字符串的长度

3.list(string)

字符串转列表

4.string.join(iterable)

列表转字符串,用于将序列中的元素以指定的字符string连接生成一个新的字符串。注意:iterable只能是字符串类型,否则会报出异常

5.string.encode(encoding='UTF-8',errors='strict')

以 encoding 指定的编码格式编码字符串

6.string.decode(encoding='UTF-8',errors='strict')

解码字符串,出错默认报ValueError,除非errors是ignore或replace

7.string.translate(table [,deletechars])

根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到deletechars参数中



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3