5.1 Python字符串拼接(包含字符串拼接数字)

在 Python中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为:

strname = "str1" "str2"

strname 表示拼接以后的字符串变量名,str1 和 str2 是要拼接的字符串内容。使用这种写法,Python 会自动将两个字符串拼接在一起。

【示例】以连续书写的形式拼接字符串:

str1 = "Python教程" "http://c.biancheng.net/python/"

print(str1)

str2 = "Java" "Python" "C++" "PHP"

print(str2)

name = "C++教程"

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

info = name + "的网址是:" + url

print(info)

name = "C语言中文网"

age = 8

course = 30

info = name + "已经" + str(age) + "岁了,共发布了" + repr(course) + "套教程。"

print(info)

s = "http://c.biancheng.net/shell/"

s_str = str(s)

s_repr = repr(s)

print( type(s_str) )

print (s_str)

print( type(s_repr) )

print (s_repr)

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

#获取索引为10的字符

print(url[10])

#获取索引为 -6 的字符

print(url[-6])

url = 'http://c.biancheng.net/java/'

#获取索引从7处22(不包含22)的子串

print(url[7: 22])

# 输出 zy#获取索引从7处到-6的子串

print(url[7: -6])

# 输出 zyit.org is very

#获取索引从-7到6的子串

print(url[-21: -6])

#从索引3开始,每隔4个字符取出一个字符,直到索引22为止

print(url[3: 22: 4])

url = 'http://c.biancheng.net/java/'

#获取从索引7开始,直到末尾的子串

print(url[7: ])

#获取从索引-21开始,直到末尾的子串

print(url[-21: ])

#从开头截取字符串,直到索引22为止

print(url[: 22])

#每隔3个字符取出一个字符

print(url[:: 3])

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

print(S.rjust(35))

print(addr.rjust(35))

http://c.biancheng.net/python/

http://c.biancheng.net

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

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)

Pythondir() 函数用来列出某个类或者某个模块中的全部内容,包括变量、方法、函数和类等,它的用法为:

前面我们已经学习了很多字符串提供的方法,包括 split()、join()、find()、index() 等,但这远远不是它的全部方法。由于篇幅有限,本章只能给大家列举一些最常用的方法,至于其他的方法,读者可通过本节介绍的 dir() 和 help() 函数自行查看。

5.15 Python dir()和help()帮助函数

>>> str = "C语言中文网">>> bytes = str.encode("GBK")>>> bytes.decode() #默认使用 UTF-8 编码,会抛出以下异常Traceback (most recent call last):File "", line 1, in 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语言中文网">>> bytes=str.encode()>>> bytes.decode()'C语言中文网'

【例 2】

参数含义

bytes

表示要进行转换的二进制数据。

encoding="utf-8"

指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。 注意,对 bytes 类型数据解码,要选择和当初编码时一样的格式。

errors = "strict"

指定错误处理方式,其可选择值可以是:strict:遇到非法字符就抛出异常。ignore:忽略非法字符。replace:用“?”替换非法字符。xmlcharrefreplace:使用 xml 的字符引用。该参数的默认值为 strict。

该方法中各参数的含义如表 2 所示。

decode() 方法的语法格式如下:

和 encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。

Python decode()方法

>>> str = "C语言中文网">>> str.encode('GBK')b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'

此方式默认采用 UTF-8 编码,也可以手动指定其它编码格式,例如:

>>> str = "C语言中文网">>> str.encode()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=”,直接写编码格式,例如 str.encode("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() 方法进行转换。

Python3.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+03100的十六进制:0x640.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.net

输出结果为:

str="网站名称:{:>9s}\t网址:{:s}"

print(str.format("C语言中文网","c.biancheng.net"))

【例 1】

index:指定:后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。

fill:指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。

align:指定数据的对齐方式,具体的对齐方式如表 1 所示。

align含义

<

数据左对齐。

>

数据右对齐。

=

数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效。

^

数据居中,此选项需和 width 参数一起使用。

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 位)。

注意,格式中用 [] 括起来的参数都是可选参数,即可以使用,也可以不使用。各个参数的含义如下:

{ index[align] [sign] [#] [width] [.precision] [type] ] }

学习 format() 方法的难点,在于搞清楚 str 显示样式的书写格式。在创建显示样式模板时,需要使用{}和:来指定占位符,其完整的语法格式为:

此方法中,str 用于指定字符串的显示样式;args 用于指定要进行格式转换的项,如果有多项,之间有逗号进行分割。

str.format(args)

format() 方法的语法格式如下:

前面章节介绍了如何使用 % 操作符对各种类型的数据进行格式化输出,这是早期 Python提供的方法。自 Python 2.6 版本开始,字符串类型(str)提供了 format() 方法对字符串进行格式化,本节就来学习此方法。

5.13 Python format()格式化输出方法详解

>>> str = " c.biancheng.net \t\n\r">>> str.rstrip()' c.biancheng.net'

【例 3】

str 和 chars 参数的含义和前面 2 种方法语法格式中的参数完全相同。

str.rstrip([chars])

rstrip() 方法用于删除字符串右侧的空格和特殊字符,其语法格式为:

Python rstrip()方法

>>> str = " c.biancheng.net \t\n\r">>> str.lstrip()'c.biancheng.net \t\n\r'

【例 2】

其中,str 和 chars 参数的含义,分别同 strip() 语法格式中的 str 和 chars 完全相同。

str.lstrip([chars])

lstrip() 方法用于去掉字符串左侧的空格和特殊字符。该方法的语法格式如下:

Python lstrip()方法

分析运行结果不难看出,通过 strip() 确实能够删除字符串左右两侧的空格和特殊字符,但并没有真正改变字符串本身。

>>> str = " c.biancheng.net \t\n\r">>> str.strip()'c.biancheng.net'>>> str.strip(" ,\r")'c.biancheng.net \t\n'>>> str' c.biancheng.net \t\n\r'

【例 1】

其中,str 表示原字符串,[chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符。

str.strip([chars])

strip() 方法用于删除字符串左右两个的空格和特殊字符,该方法的语法格式为:

Python strip()方法

注意,Python 的 str 是不可变的(不可变的意思是指,字符串一旦形成,它所包含的字符序列就不能发生任何改变),因此这三个方法只是返回字符串前面或后面空白被删除之后的副本,并不会改变字符串本身。

strip():删除字符串前后(左右两侧)的空格或特殊字符。

lstrip():删除字符串前面(左边)的空格或特殊字符。

rstrip():删除字符串后面(右边)的空格或特殊字符。

Python中,字符串变量提供了 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.net">>> str.title()'C.Biancheng.Net'>>> str = "I LIKE C">>> str.title()'I Like C'

【例 1】

其中,str 表示要进行转换的字符串。

str.title()

title() 方法的语法格式如下:

title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。

Python title()方法

Python中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。

5.11 Python字符串大小写转换(3种)函数及用法

>>> str = "c.biancheng.net">>> str.endswith("net")True

【例 4】检索“c.biancheng.net”是否以“net”结束。

str:表示原字符串;

sub:表示要检索的字符串;

start:指定检索开始时的起始位置索引(字符串第一个字符对应的索引值为 0),如果不指定,默认从头开始检索。

end:指定检索的结束位置索引,如果不指定,默认一直检索到结束。

此格式中各参数的含义如下:

str.endswith(sub[,start[,end]])

endswith() 方法用于检索字符串是否以指定字符串结尾,如果是则返回 True;反之则返回 False。该方法的语法格式如下:

endswith()方法

>>> str = "c.biancheng.net">>> str.startswith("b",2)True

【例 3】从指定位置开始检索。

>>> str = "c.biancheng.net">>> str.startswith("http")False

【例 2】

>>> str = "c.biancheng.net">>> str.startswith("c")True

【例 1】判断“c.biancheng.net”是否以“c”子串开头。

str:表示原字符串;

sub:要检索的子串;

start:指定检索开始的起始位置索引,如果不指定,则默认从头开始检索;

end:指定检索的结束位置索引,如果不指定,则默认一直检索在结束。

此格式中各个参数的具体含义如下:

str.startswith(sub[,start[,end]])

startswith() 方法用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。此方法的语法格式如下:

startswith()方法

除了前面介绍的几个方法外,Python字符串变量还可以使用 startswith() 和endswith() 方法。

5.10 Python startswith()和endswith()方法

---http://c.biancheng.net/python/--

-------http://c.biancheng.net------

输出结果为:

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

print(S.center(35,'-'))

print(addr.center(35,'-'))

【例 6】

http://c.biancheng.net/python/

http://c.biancheng.net

输出结果为:

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

print(S.center(35,))

print(addr.center(35,))

【例 5】

其中各个参数的含义和 ljust()、rjust() 方法相同。

S.center(width[, fillchar])

center() 方法的基本格式如下:

center() 字符串方法与 ljust() 和 rjust() 的用法类似,但它让文本居中,而不是左对齐或右对齐。

Python rjust()方法

-----http://c.biancheng.net/python/

-------------http://c.biancheng.net

输出结果为:

【例 4】

可以看到,每行字符串都占用 35 个字节的位置,实现了整体的右对齐效果。

输出结果为:

【例 3】

其中各个参数的含义和 ljust() 完全相同,所以这里不再重复描述。

S.rjust(width[, fillchar])

rjust() 方法的基本格式如下:

rjust() 和 ljust() 方法类似,唯一的不同在于,rjust() 方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。

Python rjust()方法

此程序和例 1 的唯一区别是,填充字符从空格改为‘-’。

http://c.biancheng.net/python/-----

http://c.biancheng.net-------------

输出结果为:

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

print(S.ljust(35,'-'))

print(addr.ljust(35,'-'))

【例 2】

注意,该输出结果中除了明显可见的网址字符串外,其后还有空格字符存在,每行一共 35 个字符长度。

http://c.biancheng.net/python/

http://c.biancheng.net

输出结果为:

S = 'http://c.biancheng.net/python/'

addr = 'http://c.biancheng.net'

print(S.ljust(35))

print(addr.ljust(35))

【例 1】

S:表示要进行填充的字符串;

width:表示包括 S 本身长度在内,字符串要占的总长度;

fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格。

其中各个参数的含义如下:

S.ljust(width[, fillchar])

ljust() 方法的基本格式如下:

ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。

Python ljust()方法

Pythonstr 提供了 3 种可用来进行文本对齐的方法,分别是 ljust()、rjust() 和 center() 方法,本节就来一一介绍它们的用法。

5.9 Python字符串对齐方法(ljust()、rjust()和center())详解

>>> str = "c.biancheng.net">>> str.rindex('.')11

同 find() 和 rfind() 一样,字符串变量还具有 rindex() 方法,其作用和 index() 方法类似,不同之处在于它是从右边开始检索,例如:

>>> str = "c.biancheng.net">>> str.index('z')Traceback (most recent call last):File "", line 1, in str.index('z')ValueError: substring not found

【例 2】当检索失败时,index()会抛出异常。

>>> str = "c.biancheng.net">>> str.index('.')1

【例 1】用 index() 方法检索“c.biancheng.net”中首次出现“.”的位置索引。

str:表示原字符串;

sub:表示要检索的子字符串;

start:表示检索开始的起始位置,如果不指定,默认从头开始检索;

end:表示检索的结束位置,如果不指定,默认一直检索到结尾。

此格式中各参数的含义分别是:

str.index(sub[,start[,end]])

index() 方法的语法格式如下:

同 find() 方法类似,index() 方法也可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。

5.8 Python index()方法:检测字符串中是否包含某子串

>>> str = "c.biancheng.net">>> str.rfind('.')11

注意,Python还提供了 rfind() 方法,与 find() 方法最大的不同在于,rfind() 是从字符串右边开始检索。例如:

位于索引(2,-4)之间的字符串为“biancheng”,由于其不包含“.”,因此 find() 方法的返回值为 -1。

>>> str = "c.biancheng.net">>> str.find('.',2,-4)-1

【例 3】手动指定起始索引和结束索引的位置。

>>> str = "c.biancheng.net">>> str.find('.',2)11

【例 2】手动指定起始索引的位置。

>>> str = "c.biancheng.net">>> str.find('.')1

【例 1】用 find() 方法检索 “c.biancheng.net” 中首次出现 “.” 的位置索引。

str:表示原字符串;

sub:表示要检索的目标字符串;

start:表示开始检索的起始位置。如果不指定,则默认从头开始检索;

end:表示结束检索的结束位置。如果不指定,则默认一直检索到结尾。

此格式中各参数的含义如下:

str.find(sub[,start[,end]])

find() 方法的语法格式如下:

find() 方法用于检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。

5.7 Python find()方法:检测字符串中是否包含某子串

>>> str = "c.biancheng.net">>> str.count('.',2,-3)1>>> str.count('.',2,-4)0

【例 3】

前面讲过,字符串中各字符对应的检索值,从 0 开始,因此,本例中检索值 1 对应的是第 2 个字符‘.’,从输出结果可以分析出,从指定索引位置开始检索,其中也包含此索引位置。

>>> str = "c.biancheng.net">>> str.count('.',1)2>>> str.count('.',2)1

【例 2】

>>> str = "c.biancheng.net">>> str.count('.')2

【例 1】检索字符串“c.biancheng.net”中“.”出现的次数。

str:表示原字符串;

sub:表示要检索的字符串;

start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;

end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。

此方法中,各参数的具体含义如下:

str.count(sub[,start[,end]])

count 方法的语法格式如下:

count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。

5.6 Python count()方法:统计字符串出现的次数

>>> dir = '','usr','bin','env'>>> type(dir)>>> '/'.join(dir)'/usr/bin/env'

【例 2】将元组中的字符串合并成一个字符串。

>>> list = ['c','biancheng','net']>>> '.'.join(list)'c.biancheng.net'

【例 1】将列表中的字符串合并成一个字符串。

newstr:表示合并后生成的新字符串;

str:用于指定合并时的分隔符;

iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。

此方法中各参数的含义如下:

newstr = str.join(iterable)

join() 方法的语法格式如下:

使用 join() 方法合并字符串时,它会将列表(或元组)中多个字符串采用固定的分隔符连接在一起。例如,字符串“c.biancheng.net”就可以看做是通过分隔符“.”将 ['c','biancheng','net'] 列表合并为一个字符串的结果。

想详细了解 split() 方法的读者,可阅读《

join() 方法也是非常重要的字符串方法,它是 split() 方法的逆方法,用来将列表(或元组)中包含的多个字符串连接成一个字符串。

5.5 Python join()方法:合并字符串

>>> str = "C语言中文网 >>> c.biancheng.net" #包含 3 个连续的空格>>> list6 = str.split()>>> list6['C语言中文网', '>>>', 'c.biancheng.net']>>>

需要注意的是,在未指定 sep 参数时,split() 方法默认采用空字符进行分割,但当字符串中有连续的空格或其他空字符时,都会被视为一个分隔符对字符串进行分割,例如:

>>> str = "C语言中文网 >>> c.biancheng.net">>> str'C语言中文网 >>> c.biancheng.net'>>> list1 = str.split() #采用默认分隔符进行分割>>> list1['C语言中文网', '>>>', 'c.biancheng.net']>>> list2 = str.split('>>>') #采用多个字符进行分割>>> list2['C语言中文网 ', ' c.biancheng.net']>>> list3 = str.split('.') #采用 . 号进行分割>>> list3['C语言中文网 >>> c', 'biancheng', 'net']>>> list4 = str.split(' ',4) #采用空格进行分割,并规定最多只能分割成 4 个子串>>> list4['C语言中文网', '>>>', 'c.biancheng.net']>>> list5 = str.split('>') #采用 > 字符进行分割>>> list5['C语言中文网 ', '', '', ' c.biancheng.net']>>>

例如,定义一个保存 C语言中文网网址的字符串,然后用 split() 方法根据不同的分隔符进行分隔,执行过程如下:

同内建函数(如 len)的使用方式不同,字符串变量所拥有的方法,只能采用“字符串.方法名()”的方式调用。这里不用纠结为什么,学完类和对象之后,自然会明白。

在 split 方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。

str:表示要进行分割的字符串;

sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。

maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。

此方法中各部分参数的含义分别是:

str.split(sep,maxsplit)

split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:

从本节开始,将给大家介绍一些常用的字符串类型方法,本节先介绍分割字符串的 split() 方法。

注意,这里所说的方法,指的是字符串类型 str 本身所提供的,由于涉及到类和对象的知识,初学者不必深究,只需要知道方法的具体用法即可。

Python中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。

5.4 Python split()方法详解:分割字符串

>>> str1 = "人生苦短,我用Python">>> len(str1.encode('gbk'))20

同理,如果要获取采用 GBK 编码的字符串的长度,可以执行如下代码:

因为汉字加中文标点符号共 7 个,占 21 个字节,而英文字母和英文的标点符号占 6 个字节,一共占用 27 个字节。

>>> str1 = "人生苦短,我用Python">>> len(str1.encode())27

我们可以通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。例如,采用 UTF-8 编码方式,计算“人生苦短,我用Python”的字节数,可以执行如下代码:

图 1 汉字和英文所占字节数

以 UTF-8 编码为例,字符串“人生苦短,我用Python”所占用的字节数如图 1 所示。

在 Python 中,不同的字符所占的字节数不同,数字、英文字母、小数点、下划线以及空格,各占一个字节,而一个汉字可能占 2~4 个字节,具体占多少个,取决于采用的编码方式。例如,汉字在 GBK/GB2312 编码中占用 2 个字节,而在 UTF-8 编码中一般占用 3 个字节。

在实际开发中,除了常常要获取字符串的长度外,有时还要获取字符串的字节数。

例如,定义一个字符串,内容为“http://c.biancheng.net”,然后用 len() 函数计算该字符串的长度,执行代码如下:

其中 string 用于指定要进行长度统计的字符串。

len(string)

len 函数的基本语法格式为:

Python中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。

5.3 Python len()函数详解:获取字符串长度或字节数

c.biancheng.net/java/c.biancheng.net/java/

运行结果:

【实例2】高级用法,start、end、step 三个参数都可以省略:

c.biancheng.netc.biancheng.netc.biancheng.netpcaen

运行结果:

【实例1】基本用法:

strname:要截取的字符串;

start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;

end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;

step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。

对各个部分的说明:

strname[start : end : step]

使用[ ]除了可以获取单个字符外,还可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为:

获取多个字符(字符串截去/字符串切片)

iy

运行结果:

请看下面的实例演示:

当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字符串的索引为 2 ……

当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2,倒数第三个字符的索引为 -3 ……

Python 允许从字符串的两端使用索引:

strname 表示字符串名字,index 表示索引值。

strname[index]

知道字符串名字以后,在方括号[ ]中使用索引即可访问对应的字符,具体的语法格式为:

获取单个字符

从本质上讲,字符串是由多个字符构成的,字符之间是有顺序的,这个顺序号就称为索引(index)。Python允许通过索引来操作字符串中的单个或者多个字符,比如获取指定索引处的字符,返回指定字符的索引值等。

5.2 Python截取字符串(字符串切片)方法详解

另外,在 Python 交互式编程环境中输入一个表达式(变量、加减乘除、逻辑运算等)时,Python 会自动使用 repr() 函数处理该表达式。

本例中,s 本身就是一个字符串,但是我们依然使用 str() 和 repr() 对它进行了转换。从运行结果可以看出,str() 保留了字符串最原始的样子,而 repr() 使用引号将字符串包围起来,这就是 Python 字符串的表达式形式。

运行结果:

请看下面的例子:

str() 用于将数据转换成适合人类阅读的字符串形式。

repr() 用于将数据转换成适合解释器阅读的字符串形式(Python 表达式的形式),适合在开发和调试阶段使用;如果没有等价的语法,则会发生 SyntaxError 异常。

str() 和 repr() 函数虽然都可以将数字转换成字符串,但它们之间是有区别的:

str() 和 repr() 的区别

C语言中文网已经8岁了,共发布了30套教程。

运行结果:

请看下面的代码:

obj 表示要转换的对象,它可以是数字、列表、元组、字典等多种类型的数据。

str(obj)repr(obj)

在很多应用场景中,我们需要将字符串和数字拼接在一起,而 Python 不允许直接拼接数字和字符串,所以我们必须先将数字转换成字符串。可以借助 str() 和 repr() 函数将数字转换为字符串,它们的使用格式为:

Python字符串和数字的拼接

运行结果:

【示例】使用+运算符拼接字符串:

当然,+运算符也能拼接字符串常量。

strname = str1 + str2

如果需要使用变量,就得借助+运算符来拼接,具体格式为:

需要注意的是,这种写法只能拼接字符串常量。

运行结果:

python中字符串类型的encode()方法_第五章 Python字符串常用方法详解相关推荐

  1. python中字典类型中的item是什么-python中 字典类型内置方法

    python中 字典类型内置方法 一.字典(dict) ​ 1·. 存多个值,但是每一个值都有一个key与之对应.列如存在值有姓名:jiayi.年龄:18.身高:173 ​ 2.定义方式 ​ 在{}内 ...

  2. 在Python中检查类型的规范方法是什么?

    检查给定对象是否为给定类型的最佳方法是什么? 如何检查对象是否从给定类型继承? 假设我有一个对象o . 如何检查是否为str ? #1楼 前往雨果: 您可能是说list而不是array ,但这指向类型 ...

  3. python输入123输出321的编程_第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出...

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  4. python中if函数的使用方法_(for i in range) (else) (if)使用方法

    条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: [图片上传失败...(image-ef7ddf- ...

  5. python中字符型用什么表示_「小白学Python」Python中最常用的数据类型:字符串

    Python中有6个标准数据类型,分别是:Number(数值).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 其中,String(字符 ...

  6. [转载] python中numpy模块的around方法_更好地舍入Python的NumPy.around:舍入numpy的数组

    参考链接: Python中的numpy.round_ I am looking for a way to round a numpy array in a more intuitive fashion ...

  7. 第6章 Python中的动态可执行方法 第6.1节 Python代码编译

    在介绍动态可执行方法前,本节先介绍一下Python代码编译有关的知识,因为部分内容和动态执行有些关联. 一.    Python解释器的功能 Python虽然是解释型语言,但Python代码也是可编译 ...

  8. python中的猜数字实验代码_「gals」python实现推理猜数字游戏Begals - seo实验室

    gals Begals是可以和朋友一起玩的一个推理游戏.你的朋友想到一个随机的.没有重复的3位数字,你尝试去猜测它是什么. 每次猜测之后,朋友就会给出3种类型的线索: Bagels:你猜测的3个数都不 ...

  9. python中返回上一步操作_通过实例解析Python文件操作实现步骤

    当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. Python 提供了内置的文件对象,以及 ...

最新文章

  1. mysql filter_MySQL 过滤复制+复制映射 配置方法
  2. Anroid基础建设之View,Window,Activity
  3. Linux USB 驱动开发(一)—— USB设备基础概念【转】
  4. jvm jinfo 参数_jinfo:JVM运行时配置的命令行浏览
  5. 普通二本的辛酸Android面试之路,算法太TM重要了
  6. 以小见大:如何设计注册登录页?
  7. Linux 命令(99)—— dirname 命令
  8. HDU2191 珍惜现在,感恩生活【背包】
  9. MySQL ( Ubuntu16.04 )
  10. 要做最快的男人,教你用Python写一个打字测试器测试你的打字速度~
  11. [集训队作业2018]uoj 449 喂鸽子 - min-max容斥 - dp - NTT
  12. 计算机中电容状态表示什么,电脑主板电容坏了的表现有哪些?
  13. 男生说fb是什么梗_男生聊污是什么意思 男生会对谁聊污
  14. 由 An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution 引起的思考
  15. 小鹤双拼提速方法个人经验-by老随风
  16. Maven依赖冲突问题解决方案
  17. 2021年web前端基础面试题
  18. 济宁中考计算机考试试题,济宁市初中信息技术考试模拟题-1.doc
  19. 安卓studio访问mysql数据库_小白通过JDBC在AndroidStudio一步步来访问MYSQL数据库-Go语言中文社区...
  20. 滴滴出行数据应用平台建设实践

热门文章

  1. 健身瑜伽游泳篮球馆多门店私教课程预约会员卡小程序开发
  2. 在Linux上高效开发的7个建议
  3. 使用PYTHON将上百个TXT文件提取其中信息生成一个csv
  4. pta 支票面额(C语言实现)
  5. 《女人的起源》笔记转载
  6. markdown文件表格的写法
  7. Linux搜索文件和删除文件
  8. QGIS上加载瓦片地图
  9. 如何批量查询苏宁快递多个单号的物流是否签收
  10. 半年翻倍!内存条掀起涨价潮