Python字符串

 

目录

拼接

字符串和数字的拼接

str() 和 repr() 的区别

获取单个字符

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

len()函数:获取字符串长度或字节数

split()方法:分割字符串

 join()方法:合并字符串

count():统计字符串出现的次数

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

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

ljust()方法

rjust()方法

center()方法

startswith()和endswith()方法

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

title()方法

lower()方法

upper()方法

去除字符串中空格(删除指定字符)的3种方法

strip()方法

lstrip()方法

 lstrip()方法

format()格式化输出方法

encode()和decode()方法:字符串编码转换

encode()方法

decode()方法

dir()和help()帮助函数


拼接

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

strname = "str1" "str2"

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

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

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

strname = str1 + str2

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

字符串和数字的拼接

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

str(obj)


repr(obj)

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

str() 和 repr() 的区别

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

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

结果:
18 '小明'
18 小明

获取单个字符

strname[index]

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

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

  • 当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字符串的索引为 2 ……
  • 当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2,倒数第三个字符的索引为 -3 ……
str1 = '0123456789'
str2 = '987654321'

print(str1[5])
print(str2[-4])

结果:

5
4

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

可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为:

strname[start : end : step]

对各个部分的说明:

  • strname:要截取的字符串;
  • start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;
  • end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;
  • step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。
str1 = '0123456789'
str2 = '987654321'

print(str1[5:7])
print(str1[1:8:2])
print(str2[-4:-1])

结果:

56
1357
432

len()函数:获取字符串长度或字节数

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

len(string)

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

可以通过使用 strname.encode() 方法,将字符串进行编码后再获取它的字节数。

split()方法:分割字符串

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

list = str.split(sep,maxsplit)

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

  1. str:表示要进行分割的字符串;
  2. sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。
  3. maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。


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

 join()方法:合并字符串

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

str="www.baidu.com"
list = str.split(".")

print(list)

str2 = '|'.join(list)
print(str2)

结果:

['www', 'baidu', 'com']
www|baidu|com

count():统计字符串出现的次数

count 方法的语法格式如下:

str.count(sub,start,end)

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

  1. str:表示原字符串;
  2. sub:表示要检索的字符串;
  3. start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;
  4. end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。
str="www.baiduBaiDU.com"

cnt = str.count('.',3)
print(cnt)

结果:
2

cnt = str.count('.',3,-4)
print(cnt)

结果:
1

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

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

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

str.find(sub,start,end)

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

  1. str:表示原字符串;
  2. sub:表示要检索的目标字符串;
  3. start:表示开始检索的起始位置。如果不指定,则默认从头开始检索;
  4. end:表示结束检索的结束位置。如果不指定,则默认一直检索到结尾。
str="www.baiduBaiDU.com"

cnt = str.find('.',4)
print(cnt)

结果:
14

cnt = str.count('.',3,-4)
print(cnt)
结果:
1

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

str="www.baiduBaiDU.com"

cnt = str.find('.',2)
print(cnt)

结果:
3

cnt = str.rfind('.',2)
print(cnt)

结果:14

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

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

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

str.index(sub,start,end)

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

  1. str:表示原字符串;
  2. sub:表示要检索的子字符串;
  3. start:表示检索开始的起始位置,如果不指定,默认从头开始检索;
  4. end:表示检索的结束位置,如果不指定,默认一直检索到结尾。
str="www.baiduBaiDU.com"

cnt = str.index('bai')
print(cnt)

结果:4

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

ljust()方法

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

 

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

S.ljust(width,"fillchar--空格代替符号(默认空格)")

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

  • S:表示要进行填充的字符串;
  • width:表示包括 S 本身长度在内,字符串要占的总长度;
  • fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格,只能使用一个字符。
str1 = "www.baidu.com"
str2 = "www.google.com"

print(str1.ljust(18),"结束")
print(str2.ljust(18,'1'))

结果:
www.baidu.com      结束
www.google.com1111

rjust()方法

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

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

S.rjust(width,"空格代替符号(默认空格)")

str1 = "www.baidu.com"
str2 = "www.google.com"

print(str1.rjust(18),"结束")
print(str2.rjust(18,'1'))

结果:
     www.baidu.com 结束
1111www.google.com

center()方法

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

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

S.center(width,"空格代替符号(默认空格)")

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

str1 = "www.baidu.com"
str2 = "www.google.com"

print(str1.center(18),"结束")
print(str2.center(18,'-'))

结果:
  www.baidu.com    结束
--www.google.com--

startswith()和endswith()方法

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

str.startswith(sub,start,end)

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

  1. str:表示原字符串;
  2. sub:要检索的子串;
  3. start:指定检索开始的起始位置索引,如果不指定,则默认从头开始检索;
  4. end:指定检索的结束位置索引,如果不指定,则默认一直检索在结束。

判断“www.baidu.com”是否以“w”子串开头。

str1 = "www.baidu.com"

print(str1.startswith('w'))

结果:
True

从指定位置开始检索。

str1 = "www.baidu.com"

print(str1.startswith('w',-2))

结果:
False

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

str.endswith(sub,start,end)

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

  1. str:表示原字符串;
  2. sub:表示要检索的字符串;
  3. start:指定检索开始时的起始位置索引(字符串第一个字符对应的索引值为 0),如果不指定,默认从头开始检索。
  4. end:指定检索的结束位置索引,如果不指定,默认一直检索到结束。

检索“www.baidu.com”是否以“com”结束。

str1 = "www.baidu.com"

print(str1.endswith('com'))

结果:
True

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

字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。

title()方法

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

str1 = "www.baidu.com"
str2 = "www baidu com"

print(str1.title())
print(str2.title())

结果:
Www.Baidu.Com
Www Baidu Com

lower()方法

ower() 方法用于将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。如果字符串中原本就都是小写字母,则该方法会返回原字符串。

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

str.lower()

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

str1 = "wwW.baiDu.cOm"

print(str1.lower())

结果:
www.baidu.com

upper()方法

upper() 的功能和 lower() 方法恰好相反,它用于将字符串中的所有小写字母转换为大写字母,和以上两种方法的返回方式相同,即如果转换成功,则返回新字符串;反之,则返回原字符串。
upper() 方法的语法格式如下:

str.upper()

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

str1 = "wwW.baiDu.cOm"

print(str1.upper())

结果:
WWW.BAIDU.COM

去除字符串中空格(删除指定字符)的3种方法

字符串变量提供了 3 种方法来删除字符串中多余的空格和特殊字符,它们分别是:

  1. strip():删除字符串前后(左右两侧)的空格或特殊字符。
  2. lstrip():删除字符串前面(左边)的空格或特殊字符。
  3. rstrip():删除字符串后面(右边)的空格或特殊字符。

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

strip()方法

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

str.strip([chars])

其中,str 表示原字符串,[chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,

则默认会删除空格以及制表符、回车符、换行符等特殊字符。

str1 = "    wwW.baiDu.cOm \t\n"

print(str1)
print(str1.strip())
print(str1.strip(" ,\n"))

结果:
    wwW.baiDu.cOm 	

wwW.baiDu.cOm
wwW.baiDu.cOm 	

lstrip()方法

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

str.lstrip([chars])

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

str = "   baidu.com \t\n\r"

print(str)
print(str.lstrip())

结果:
   baidu.com 	

baidu.com 	

 lstrip()方法

str = "   baidu.com \t\n\r"

print(str,"尾巴")
print(str.rstrip(),"尾巴")

结果:
   baidu.com 	
 尾巴
   baidu.com 尾巴

format()格式化输出方法

自 Python 2.6 版本开始,字符串类型(str)提供了 format() 方法对字符串进行格式化。

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

str.format(args)

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

 

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

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

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

  • index:指定:后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。
  • fill:指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。
  • align:指定数据的对齐方式,具体的对齐方式如表 1 所示。
    表 1 align 参数及含义
    align含义
    <数据左对齐。
    >数据右对齐。
    =数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效。
    ^数据居中,此选项需和 width 参数一起使用。
  • sign:指定有无符号数,此参数的值以及对应的含义如表 2 所示。
    表 2 sign 参数以含义
    sign参数含义
    +正数前加正号,负数前加负号。
    -正数前不加正号,负数前加负号。
    空格正数前加空格,负数前加负号。
    #对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀。
  • width:指定输出数据时所占的宽度。
  • .precision:指定保留的小数位数。
  • type:指定输出数据的具体类型,如表 3 所示。
    表 3 type 占位符类型及含义
    type类型值含义
    s对字符串类型格式化。
    d十进制整数。
    c将十进制整数自动转换成对应的 Unicode 字符。
    e 或者 E 转换成科学计数法后,再格式化输出。
    g 或 G自动在 e 和 f(或 E 和 F)中切换。
    b将十进制数自动转换成二进制表示,再格式化输出。
    o将十进制数自动转换成八进制表示,再格式化输出。
    x 或者 X将十进制数自动转换成十六进制表示,再格式化输出。
    f 或者 F转换为浮点数(默认小数点后保留 6 位),再格式化输出。
    %显示百分比(默认显示小数点后 6 位)。
str="网站名称:{:>9s}\t网址:{:s}"

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

结果:
网站名称:       百度	网址:www.baidu.com
#以货币形式显示
print("货币形式:{:,d}".format(1000000))
#科学计数法表示
print("科学计数法:{:E}".format(1200.12))
#以十六进制表示
print("100的十六进制:{:#x}".format(100))
#输出百分比形式
print("0.01的百分比表示:{:.0%}".format(0.01))

结果:

货币形式:1,000,000
科学计数法:1.200120E+03
100的十六进制:0x64
0.01的百分比表示:1%

encode()和decode()方法:字符串编码转换

最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个大小写英文字母以及一些特殊字符进行了编码。ASCII 码做多只能表示 256 个符号,每个字符只需要占用 1 个字节。

各国的文字都需要进行编码,于是相继出现了 GBK、GB2312、UTF-8 编码等,其中 GBK 和 GB2312 是我国制定的中文编码标准,规定英文字符母占用 1 个字节,中文字符占用 2 个字节;而 UTF-8 是国际通过的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占用 1 个字节,中文字符占用 3 个字节。

Python 3.x 默认采用 UTF-8 编码格式,有效地解决了中文乱码的问题。

在 Python 中,有 2 种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。

str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。

encode()方法

encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。

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

str.encode([encoding="utf-8"][,errors="strict"])

注意,格式中用 [] 括起来的参数为可选参数,也就是说,在使用此方法时,可以使用 [] 中的参数,也可以不使用。

该方法各个参数的含义如表 1 所示。
 

表 1 encode()参数及含义
参数含义
str表示要进行转换的字符串。
encoding = "utf-8"指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码。例如,如果想使用简体中文,可以设置 gb2312。

当方法中只使用这一个参数时,可以省略前边的“encoding=”,直接写编码格式,例如 str.encode("UTF-8")。
errors = "strict"指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。
  • ignore:忽略非法字符。
  • replace:用“?”替换非法字符。
  • xmlcharrefreplace:使用 xml 的字符引用。
该参数的默认值为 strict。

注意,使用 encode() 方法对原字符串进行编码,不会直接修改原字符串,如果想修改原字符串,需要重新赋值。

str = "百度网站是:www.baiddu.com"

print(str.encode())

结果:
b'\xe7\x99\xbe\xe5\xba\xa6\xe7\xbd\x91\xe7\xab\x99\xe6\x98\xaf\xef\xbc\x9awww.baiddu.com'

如果采用“GBK”编码:

str = "百度网站是:www.baiddu.com"

print(str.encode('GBK'))

结果;
b'\xb0\xd9\xb6\xc8\xcd\xf8\xd5\xbe\xca\xc7\xa3\xbawww.baiddu.com'

decode()方法

 

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

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

bytes.decode([encoding="utf-8"][,errors="strict"])

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

表 2 decode()参数及含义
参数含义
bytes表示要进行转换的二进制数据。
encoding="utf-8"指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。

注意,对 bytes 类型数据解码,要选择和当初编码时一样的格式。
errors = "strict"指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。
  • ignore:忽略非法字符。
  • replace:用“?”替换非法字符。
  • xmlcharrefreplace:使用 xml 的字符引用。
该参数的默认值为 strict。
str = "百度网站是:www.baiddu.com"

str_encode = str.encode()
print(str_encode,"类型是:",type(str_encode))
print(str_encode.decode())

结果:
b'\xe7\x99\xbe\xe5\xba\xa6\xe7\xbd\x91\xe7\xab\x99\xe6\x98\xaf\xef\xbc\x9awww.baiddu.com' 类型是: <class 'bytes'>
百度网站是:www.baiddu.com


bytes = b'\xe7\x99\xbe\xe5\xba\xa6\xe7\xbd\x91\xe7' \
        b'\xab\x99\xe6\x98\xaf\xef\xbc\x9awww.baiddu.com'
print(bytes.decode())

结果:
百度网站是:www.baiddu.com

注意,如果编码时采用的不是默认的 UTF-8 编码,则解码时要选择和编码时一样的格式,否则会抛出异常。

dir()和help()帮助函数

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

dir(obj)

obj 表示要查看的对象。obj 可以不写,此时 dir() 会列出当前范围内的变量、方法和定义的类型。

Python help() 函数用来查看某个函数或者模块的帮助文档,它的用法为:

help(obj)

obj 表示要查看的对象。obj 可以不写,此时 help() 会进入帮助子程序。

掌握了以上两个函数,我们就可以自行查阅 Python 中所有方法、函数、变量、类的用法和功能了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新待开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值