第五章Python字符串常⽤⽅法详解
5.1 Python字符串拼接(包含字符串拼接数字)
在中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在⼀起,具体格式为:
strname = "str1" "str2"
strname 表⽰拼接以后的字符串变量名,str1 和 str2 是要拼接的字符串内容。使⽤这种写法,Python 会⾃动将两个字符串拼接在⼀起。【⽰例】以连续书写的形式拼接字符串:
str1 = "Python教程" "c.biancheng/python/"
print(str1)
str2 = "Java" "Python" "C++" "PHP"
print(str2)
name = "C++教程"
url = "c.biancheng/cplus/"
info = name + "的⽹址是:" + url
print(info)
name = "C语⾔中⽂⽹"
age = 8
course = 30
info = name + "已经" + str(age) + "岁了,共发布了" + repr(course) + "套教程。"
print(info)
s = "c.biancheng/shell/"
s_str = str(s)
s_repr = repr(s)
print( type(s_str) )
print (s_str)
print( type(s_repr) )
print (s_repr)
url = 'c.biancheng/python/'
#获取索引为10的字符
print(url[10])
#获取索引为 -6 的字符
print(url[-6])
url = 'c.biancheng/java/'
#获取索引从7处22(不包含22)的⼦串
print(url[7: 22])
# 输出 zy#获取索引从7处到-6的⼦串
print(url[7: -6])
# 输出 is very
#获取索引从-7到6的⼦串
print(url[-21: -6])
#从索引3开始,每隔4个字符取出⼀个字符,直到索引22为⽌
print(url[3: 22: 4])
url = 'c.biancheng/java/'
#获取从索引7开始,直到末尾的⼦串
print(url[7: ])
#获取从索引-21开始,直到末尾的⼦串
print(url[-21: ])
#从开头截取字符串,直到索引22为⽌
print(url[: 22])
#每隔3个字符取出⼀个字符
print(url[:: 3])
S = 'c.biancheng/python/'
addr = 'c.biancheng'
print(S.rjust(35))
print(addr.rjust(35))
c.biancheng/python/
c.biancheng
S = 'c.biancheng/python/'
addr = 'c.biancheng'
print(S.rjust(35,'-'))
print(addr.rjust(35,'-'))
注意,使⽤ help() 查看某个函数的⽤法时,函数名后边不能带括号,例如将上⾯的命令写作help(str.lower())就是错误的。
可以看到,lower() 函数⽤来将字符串中的字母转换为⼩写形式,并返回⼀个新的字符串。
lower(self, /) Return a copy of the string converted to lowercase.
>>> help(str.lower) Help on method_descriptor:
【实例】使⽤ help() 查看 str 类型中 lower() 函数的⽤法:
在 Python 标准库中,以__开头和结尾的⽅法都是私有的,不能在类的外部调⽤。
>>> dir(str) ['add', 'class', 'contains', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getnewargs', 'gt', 'hash', 'init', 'init_subclass', 'iter', 'le', 'len', 'lt', 'mod', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'rmod', 'rmul', 'setattr', 'sizeof', 'str', 'subclasshook', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
【实例】使⽤ dir() 查看字符串类型(str)⽀持的所有⽅法:
掌握了以上两个函数,我们就可以⾃⾏查阅 Python 中所有⽅法、函数、变量、类的⽤法和功能了。
obj 表⽰要查看的对象。obj 可以不写,此时 help() 会进⼊帮助⼦程序。
help(obj)
Python help() 函数⽤来查看某个函数或者模块的帮助⽂档,它的⽤法为:
obj 表⽰要查看的对象。obj 可以不写,此时 dir() 会列出当前范围内的变量、⽅法和定义的类型。
dir(obj)
dir() 函数⽤来列出某个类或者某个模块中的全部内容,包括变量、⽅法、函数和类等,它的⽤法为:
前⾯我们已经学习了很多字符串提供的⽅法,包括 split()、join()、find()、index() 等,但这远远不是它的全部⽅法。由于篇幅有限,本章只能给⼤家列举⼀些最常⽤的⽅法,⾄于其他的⽅法,读者可通过本节介绍的 dir() 和 help() 函数⾃⾏查看。
5.15 Python dir()和help()帮助函数
>>> str = "C语⾔中⽂⽹" >>> bytes = de("GBK") >>> bytes.decode() #默认使⽤ UTF-8 编码,会抛出以下异常 Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> bytes.decode() UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 1: invalid continuation byte >>> bytes.decode("GBK") 'C语⾔中⽂⽹'
注意,如果编码时采⽤的不是默认的 UTF-8 编码,则解码时要选择和编码时⼀样的格式,否则会抛出异常,例如:
>>> str = "C语⾔中⽂⽹" >>> de() >>> bytes.decode() 'C语⾔中⽂⽹'
【例 2】
参数含义
bytes表⽰要进⾏转换的⼆进制数据。
encoding="utf-8"指定解码时采⽤的字符编码,默认采⽤ utf-8 格式。当⽅法中只使⽤这⼀个参数时,可以省略“encoding=”,直接写编码⽅式即可。注意,对 bytes 类型数据解码,要选择和当初编码时⼀样的格式。
请输入长度介于05之间的字符串errors = "strict"指定错误处理⽅式,其可选择值可以是:strict:遇到⾮法字符就抛出异常。ignore:忽略⾮法字符。replace:⽤“?”替换⾮法字符。xmlcharrefreplace:使⽤ xml 的字符引⽤。该参数的默认值为 strict。
该⽅法中各参数的含义如表 2 所⽰。
bytes.decode()
decode() ⽅法的语法格式如下:
和 encode() ⽅法正好相反,decode() ⽅法⽤于将 bytes 类型的⼆进制数据转换为 str 类型,这个过程也称为“解码”。
Python decode()⽅法
>>> str = "C语⾔中⽂⽹" >>> de('GBK') b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'
此⽅式默认采⽤ UTF-8 编码,也可以⼿动指定其它编码格式,例如:
>>> str = "C语⾔中⽂⽹" >>> de() b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
【例 1】将 str 类型字符串“C语⾔中⽂⽹”转换成 bytes 类型。
注意,使⽤ encode() ⽅法对原字符串进⾏编码,不会直接修改原字符串,如果想修改原字符串,需要重新赋值。
参数含义
str表⽰要进⾏转换的字符串。
encoding = "utf-8"指定进⾏编码时采⽤的字符编码,该选项默认采⽤ utf-8 编码。例如,如果想使⽤简体中⽂,可以设置 gb2312。当⽅法中只使⽤这⼀个参数时,可以省略前边的“encoding=”,直接写编码格式,例如 de("UTF-8")。
errors = "strict"指定错误处理⽅式,其可选择值可以是:strict:遇到⾮法字符就抛出异常。ignore:忽略⾮法字符。replace:⽤“?”替换⾮法字符。xmlcharrefreplace:使⽤ xml 的字符引⽤。该参数的默认值为 strict。
参数含义
该⽅法各个参数的含义如表 1 所⽰。
注意,格式中⽤ [] 括起来的参数为可选参数,也就是说,在使⽤此⽅法时,可以使⽤ [] 中的参数,也可以不使⽤。
encode() ⽅法的语法格式如下:
encode() ⽅法为字符串类型(str)提供的⽅法,⽤于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。
Python encode()⽅法
在 Python 中,有 2 种常⽤的字符串类型,分别为 str 和 bytes 类型,其中 str ⽤来表⽰ Unicode 字符,bytes ⽤来表⽰⼆进制数据。str 类型和 bytes 类型之间就需要使⽤ encode() 和 decode() ⽅法进⾏转换。
3.x 默认采⽤ UTF-8 编码格式,有效地解决了中⽂乱码的问题。
随着信息技术的发展,各国的⽂字都需要进⾏编码,于是相继出现了 GBK、GB2312、UTF-8 编码等,其中 GBK 和 GB2312 是我国制定的中⽂编码标准,规定英⽂字符母占⽤ 1 个字节,中⽂字符占⽤ 2 个字节;⽽ UTF-8 是国际通过的编码格式,它包含了全世界所有国家需要⽤到的字符,其规定英⽂字符占⽤ 1 个字节,中⽂字符占⽤ 3 个字节。
我们知道,最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个⼤⼩写英⽂字母以及⼀些特殊字符进⾏了编码。ASCII 码做多只能表⽰ 256 个符号,每个字符只需要占⽤ 1 个字节。
前⾯章节在介绍 bytes 类型时,已经对 encode() 和 decode() ⽅法的使⽤做了简单的介绍,本节将对这 2 个⽅法做详细地说明。
5.14 Python encode()和decode()⽅法:字符串编码转换
货币形式:1,000,000 科学计数法:1.200120E+03 100的⼗六进制:0x64 0.01的百分⽐表⽰:1%
输出结果为:
#以货币形式显⽰
print("货币形式:{:,d}".format(1000000))
#科学计数法表⽰
print("科学计数法:{:E}".format(1200.12))
#以⼗六进制表⽰
print("100的⼗六进制:{:#x}".format(100))
#输出百分⽐形式
print("0.01的百分⽐表⽰:{:.0%}".format(0.01))
【例 2】在实际开发中,数值类型有多种显⽰需求,⽐如货币形式、百分⽐形式等,使⽤ format() ⽅法可以将数值格式化为不同的形式。
⽹站名称: C语⾔中⽂⽹⽹址:c.biancheng
输出结果为:
str="⽹站名称:{:>9s}\t⽹址:{:s}"
print(str.format("C语⾔中⽂⽹","c.biancheng"))
【例 1】
index:指定:后边设置的格式要作⽤到 args 中第⼏个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序⾃动分配。
fill:指定空⽩处填充的字符。注意,当填充字符为逗号(,)且作⽤于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。
align:指定数据的对齐⽅式,具体的对齐⽅式如表 1 所⽰。
align含义
<;数据左对齐。
>数据右对齐。
=数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效。
^数据居中,此选项需和 width 参数⼀起使⽤。
align含义
sign:指定有⽆符号数,此参数的值以及对应的含义如表 2 所⽰。
sign参数含义
+正数前加正号,负数前加负号。
-正数前不加正号,负数前加负号。
空格正数前加空格,负数前加负号。
#对于⼆进制数、⼋进制数和⼗六进制数,使⽤此参数,各进制数前会分别显⽰ 0b、0o、0x前缀;反之则不显⽰前缀。
width:指定输出数据时所占的宽度。
.precision:指定保留的⼩数位数。
type:指定输出数据的具体类型,如表 3 所⽰。
type类型值含义
s对字符串类型格式化。
d⼗进制整数。
c将⼗进制整数⾃动转换成对应的 Unicode 字符。
e 或者 E转换成科学计数法后,再格式化输出。
g 或 G⾃动在 e 和 f(或 E 和 F)中切换。
b将⼗进制数⾃动转换成⼆进制表⽰,再格式化输出。
o将⼗进制数⾃动转换成⼋进制表⽰,再格式化输出。
x 或者 X将⼗进制数⾃动转换成⼗六进制表⽰,再格式化输出。
f 或者 F转换为浮点数(默认⼩数点后保留 6 位),再格式化输出。
%显⽰百分⽐(默认显⽰⼩数点后 6 位)。
注意,格式中⽤ [] 括起来的参数都是可选参数,即可以使⽤,也可以不使⽤。各个参数的含义如下:
{ [align] [sign] [#] [width] [.precision] [type] ] }
学习 format() ⽅法的难点,在于搞清楚 str 显⽰样式的书写格式。在创建显⽰样式模板时,需要使⽤{}和:来指定占位符,其完整的语法格式为:
此⽅法中,str ⽤于指定字符串的显⽰样式;args ⽤于指定要进⾏格式转换的项,如果有多项,之间有逗号进⾏分割。
str.format(args)
format() ⽅法的语法格式如下:
前⾯章节介绍了如何使⽤ % 操作符对各种类型的数据进⾏格式化输出,这是早期提供的⽅法。⾃ Python 2.6 版本开始,字符串类型(str)提供了 format() ⽅法对字符串进⾏格式化,本节就来学习此⽅法。
5.13 Python format()格式化输出⽅法详解
>>> str = " c.biancheng \t\n\r" >>> str.rstrip() ' c.biancheng'
【例 3】
str 和 chars 参数的含义和前⾯ 2 种⽅法语法格式中的参数完全相同。
str.rstrip([chars])
rstrip() ⽅法⽤于删除字符串右侧的空格和特殊字符,其语法格式为:
Python rstrip()⽅法
>>> str = " c.biancheng \t\n\r" >>> str.lstrip() 'c.biancheng \t\n\r'
【例 2】
其中,str 和 chars 参数的含义,分别同 strip() 语法格式中的 str 和 chars 完全相同。
str.lstrip([chars])
lstrip() ⽅法⽤于去掉字符串左侧的空格和特殊字符。该⽅法的语法格式如下:
Python lstrip()⽅法
分析运⾏结果不难看出,通过 strip() 确实能够删除字符串左右两侧的空格和特殊字符,但并没有真正改变字符串本⾝。
>>> str = " c.biancheng \t\n\r" >>> str.strip() 'c.biancheng' >>> str.strip(" ,\r") 'c.biancheng \t\n' >>> str ' c.biancheng \t\n\r'
【例 1】
其中,str 表⽰原字符串,[chars] ⽤来指定要删除的字符,可以同时指定多个,如果不⼿动指定,则默认会删除空格以及制表符、回车符、换⾏符等特殊字符。
str.strip([chars])
strip() ⽅法⽤于删除字符串左右两个的空格和特殊字符,该⽅法的语法格式为:
Python strip()⽅法
注意,Python 的 str 是不可变的(不可变的意思是指,字符串⼀旦形成,它所包含的字符序列就不能发
⽣任何改变),因此这三个⽅法只是返回字符串前⾯或后⾯空⽩被删除之后的副本,并不会改变字符串本⾝。
1. strip():删除字符串前后(左右两侧)的空格或特殊字符。
2. lstrip():删除字符串前⾯(左边)的空格或特殊字符。
3. rstrip():删除字符串后⾯(右边)的空格或特殊字符。
中,字符串变量提供了 3 种⽅法来删除字符串中多余的空格和特殊字符,它们分别是:
这⾥的特殊字符,指的是制表符(\t)、回车符(\r)、换⾏符(\n)等。
⽤户输⼊数据时,很有可能会⽆意中输⼊多余的空格,或者在⼀些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。
5.12 Python去除字符串中空格(删除指定字符)的3种⽅法
需要注意的是,以上 3 个⽅法都仅限于将转换后的新字符串返回,⽽不会修改原字符串。
>>> str = "i like C" >>> str.upper() 'I LIKE C'
【例 3】
其中,str 表⽰要进⾏转换的字符串。
str.upper()
upper() ⽅法的语法格式如下:
upper() 的功能和 lower() ⽅法恰好相反,它⽤于将字符串中的所有⼩写字母转换为⼤写字母,和以上两种⽅法的返回⽅式相同,即如果转换成功,则返回新字符串;反之,则返回原字符串。
Python upper()⽅法
>>> str = "I LIKE C" >>> str.lower() 'i like c'
【例 2】
其中,str 表⽰要进⾏转换的字符串。
str.lower()
lower() ⽅法的语法格式如下:
lower() ⽅法⽤于将字符串中的所有⼤写字母转换为⼩写字母,转换完成后,该⽅法会返回新得到的字符串。如果字符串中原本就都是⼩写字母,则该⽅法会返回原字符串。
Python lower()⽅法
>>> str = "c.biancheng" >>> str.title() 'C.Biancheng.Net' >>> str = "I LIKE C" >>> str.title() 'I Like C'
【例 1】
其中,str 表⽰要进⾏转换的字符串。
str.title()
title() ⽅法的语法格式如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论