Python内置数据类型 - 文本序列类型(str)详解


文本序列类型(str)

在Python语言中,文本数据由str对象或strings进行处理。字符串是不可变的Unicode码点序列。字符串字面值的写法有多种方式,例如:

  1. 单引号('):在单引号中允许嵌入一对双引号。
  2. 双引号("):允许嵌入一对单引号。
  3. 三引号('''):可以是三个单引号(''')的用法,也可以是三个双引号(""")的用法。三引号字符串可以跨越多行,引号内的空格也会包含在字符串中。

如果多个字符串字面值都是单个表达式的一个部分并且它们之间只有空格,那么它们将被隐式转换为单个字符串字面值。也就是说,("spam " "eggs") == "spam eggs"。

方法str.capitalize()

在Python语言中,方法str.capitalize()的功能是返回字符串的副本,该副本第一个字符大写,其余字符小写。例如在下面的实例文件linuxidc01.py中,演示了使用方法str.capitalize()处理字符串的过程。

#使用capitalize()方法

s = 'a, B'

print(s.capitalize())

s = ' a, B'  # a 前面有空格

print(s.capitalize())

s = 'a, BCD'

print(s.capitalize())

执行后会输出:

A, b

 a, b

A, bcd

Python内置数据类型 - 文本序列类型(str)详解

方法str.casefold()

在Python语言中,str.casefold()的功能是返回字符串的小写形式,其功能和小写方法lower()相同,但casefold()的功能更强大,因为它旨在删除字符串中的所有case区别。例如,德国小写字母'ß'等效于"ss"。由于它已经是小写的,所以lower()对'ß'不起作用,而函数casefold()能够将其转换为"ss"。

例如在下面的实例文件linuxidc02.py中,演示了使用方法str.casefold()处理字符串的过程。

s = 'ß'

print(s.lower()) #  'ß'

print('DOBI'.casefold())# 'dobi'

print('ß'.casefold())   #德语中小写字母 ß 等同于小写字母 ss, 其大写为 SS

name = 'linuxboy www.linuxboy.net'

print(name.casefold())

执行后会输出:

ß

dobi

ss

linuxboy www.linuxboy.net

Python内置数据类型 - 文本序列类型(str)详解

方法str.count()

在Python语言中,方法str.count(sub[, start[, end]])的功能是返回在[start, end]范围内的子串sub非重叠出现的次数。可选参数start和end都以切片表示法解释,分别表示字符串的开始和结束限定范围。

  1. sub:搜索的子字符串;
  2. start:字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0;
  3. end:字符串中结束搜索的位置。字符中第一个字符的索引为0。默认为字符串的最后一个位置。

例如在下面的实例文件linuxidc03.py中,演示了使用方法str.count()处理字符串的过程。

str = "this is string example....wow!!!";

sub = "i";

print("str.count(sub, 4, 40) : ", str.count(sub, 4, 40))

sub = "wow";

print("str.count(sub) : ", str.count(sub))

执行后会输出:

str.count(sub, 4, 40) :  2

str.count(sub) :  1

方法str.encode()

在Python语言中,方法str.encode(encoding="utf-8", errors="strict")的功能是将字符串的编码版本作为字节对象返回,默认编码为'utf-8'。errors的默认值是'strict',意思编码错误引发一个UnicodeError。

  1. encoding:要使用的编码,如"UTF-8"。
  2. errors:设置不同错误的处理方案,默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

例如在下面的实例文件linuxidc04.py中,演示了使用方法str. encode()处理字符串的过程。

str = "linuxboy";

str_utf8 = str.encode("UTF-8")

str_gbk = str.encode("GBK")



print(str)



print("UTF-8 编码:", str_utf8)

print("GBK 编码:", str_gbk)



print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))

print("GBK 解码:", str_gbk.decode('GBK','strict'))

执行后会输出:

linuxboy
UTF-8 编码: b'Linux\xe5\x85\xac\xe7\xa4\xbe'
GBK 编码: b'Linux\xb9\xab\xc9\xe7'
UTF-8 解码: linuxboy
GBK 解码: linuxboy

Python内置数据类型 - 文本序列类型(str)详解

方法str.endswith()

在Python语言中,方法str.endswith(suffix[, start[, end]])的功能是如果字符串以指定的suffix结尾则返回True,否则返回False。suffix也可以是一个元组。可选的start表示从该位置开始测试,可选的end表示在该位置停止比较。

  1. suffix:该参数可以是一个字符串或者是一个元素;
  2. start:字符串中的开始位置;
  3. end:字符中结束位置。

例如在下面的实例文件linuxidc05.py中,演示了使用方法str.count()处理字符串的过程。

Str='linuxidc example....wow!!!'

suffix='!!'

print (Str.endswith(suffix))

print (Str.endswith(suffix,20))

suffix='run'

print (Str.endswith(suffix))

print (Str.endswith(suffix, 0, 19))

执行后会输出:

True

True

False

False

方法str.expandtabs()

在Python语言中,方法str.expandtabs(tabsize=8)的功能是把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是8。参数“tabsize”指定转换字符串中的 tab 符号('\t')转为空格的字符数。例如下面的演示过程:

>>> '01\t012\t0123\t01234'.expandtabs()

'01      012     0123    01234'

>>> '01\t012\t0123\t01234'.expandtabs(4)

'01  012 0123    01234'

例如在下面的实例文件linuxidc06.py中,演示了使用方法str.expandtabs()处理字符串的过程。

str = "this is\tstring example....wow!!!"



print ("原始字符串: " + str)

print ("替换 \\t 符号: " +  str.expandtabs())

print ("使用16个空格替换 \\t 符号: " +  str.expandtabs(16))

执行后会输出:

原始字符串: this is string example....wow!!!

替换 \t 符号: this is string example....wow!!!

使用16个空格替换 \t 符号: this is         string example....wow!!!

方法str.find()

在Python语言中,方法str.find(sub[, start[, end]])的功能是str.find(sub[, start[, end]])检测字符串中是否包含子字符串 str,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

  1. str:指定检索的字符串;
  2. beg:开始索引,默认为0;
  3. end:结束索引,默认为字符串的长度。

例如下面的演示过程。

True

str.format(*args, **kwargs)

例如在下面的实例文件linuxidc07.py中,演示了使用方法str.expandtabs()处理字符串的过程。

str1 = "linuxidc example....wow!!!"

str2 = "exam";



print(str1.find(str2))

print(str1.find(str2, 5))

print(str1.find(str2, 10))

执行后会输出:

6

6

-1

方法str.format()

在Python语言中,方法str.format(*args, **kwargs)的功能是执行字符串格式化操作,调用此方法的字符串可以包含文本字面值或由花括号{}分隔的替换字段,每个替换字段包含位置参数的数字索引或关键字参数的名称。返回字符串的一个拷贝,其中每个替换字段使用对应参数的字符串值替换。例如下面的演示过程:

>>> "The sum of 1 + 2 is {0}".format(1+2)

'The sum of 1 + 2 is 3'

例如在下面的实例文件linuxidc08.py中,演示了使用方法str.format()处理字符串的过程。

#format 函数可以接受不限个参数,位置可以不按顺序。

print("{} {}".format("hello", "world"))# 不设置指定位置,按默认顺序

print("{0} {1}".format("hello", "world")) # 设置指定位置

print("{1} {0} {1}".format("hello", "world"))# 设置指定位置



#也可以设置参数



print("网站名:{name}, 地址 {url}".format(name="linuxboy", url="www.linuxidc.net"))



# 通过字典设置参数

site = {"name": "菜鸟教程", "url": "www.linuxidc.net"}

print("网站名:{name}, 地址 {url}".format(**site))



# 通过列表索引设置参数

my_list = ['菜鸟教程', 'www.linuxidc.net']

print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

#也可以向 str.format() 传入对象:

class AssignValue(object):

    def __init__(self, value):

        self.value = value

my_value = AssignValue(6)

print('value 为: {0.value}'.format(my_value))  # "0" 是可选的

执行后会输出:

hello world

hello world

world hello world

网站名:菜鸟教程, 地址 www.linuxidc.net

网站名:菜鸟教程, 地址 www.linuxidc.net

网站名:菜鸟教程, 地址 www.linuxidc.net

value 为: 6

方法str.format_map()

在Python语言中,方法str.format_map(mapping)的功能类似于str.format(**mapping),区别在于format_map直接用字典,而不是复制一个。例如在下面的实例文件linuxidc09.py中,演示了使用方法str.format_map()处理字符串的过程,其中Default是dict的一个子类。。

class Default(dict):

    def __missing__(self, key):

        return key

print('{name} was born in {country}'.format_map(Default(name='Guide')))

执行后会输出:

Guide was born in country

方法str.index()

在Python语言中,方法str.index(str, beg=0, end=len(string))的功能是检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。方法str.index()的功能与str.find()方法类似,区别在于如果index找不到要寻到的字符则会得到ValueError,而find则返回-1。

  1. str:指定检索的字符串;
  2. beg:开始索引,默认为0;
  3. end:结束索引,默认为字符串的长度。

例如在下面的实例文件linuxidc10.py中,演示了使用方法str.index()处理字符串的过程。

str1 = "linuxidc example....wow!!!"

str2 = "exam";



print (str1.index(str2))

print (str1.index(str2, 5))

print (str1.index(str2, 10))

执行后会输出(未发现的会出现异常信息):

6

6

  File "zi10.py", line 6, in <module>

    print (str1.index(str2, 10))

ValueError: substring not found

方法str.isalnum()

在Python语言中,方法str.isalnum()的功能是如果字符串中的所有字符都是字母数字且至少有一个字符,则返回true,否则返回false。

例如在下面的实例文件linuxidc11.py中,演示了使用方法str.isalnum()处理字符串的过程。

str = "linuxidc2016"  # 字符串没有空格

print(str.isalnum())



str = "www.linuxidc.net"

print(str.isalnum())

执行后会输出:

True

False

方法str.isdecimal()

在Python语言中,方法str.isdecimal()的功能是如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回true,否则返回false。十进制字符是来自通用类别“Nd”的字符。此类别包括数字字符,以及可用于形成十进制数字的所有字符。要想定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。

例如在下面的实例文件linuxidc12.py中,演示了使用方法str.expandtabs()处理字符串的过程。

str = "linuxidc2018"

print (str.isdecimal())



str = "23443434"

print (str.isdecimal())

执行后会输出:

False

True

方法str.isdigit()

在Python语言中,方法str.isdigit()的功能是如果字符串中的所有字符都是数字,并且至少有一个字符则返回真,否则返回假。数字包括十进制字符和需要特殊处理的数字,例如兼容性上标数字。在形式上,数字是具有属性值Numeric_Type = Digit或Numeric_Type = Decimal的字符。

例如在下面的实例文件linuxidc13.py中,演示了使用方法str.isdigit()处理字符串的过程。

str = "123456";

print (str.isdigit())



str = "linuxidc example....wow!!!"

print (str.isdigit())

执行后会输出:

True

False

方法str. isidentifier()

在Python语言中,方法str.isidentifier()的功能是检测字符串是否是字母开头,如果是则返回True。例如下面的演示过程:

'asdfghjkhl'.isidentifier()

Out[33]: True



'2asdfghjkhl'.isidentifier()

Out[34]: False

方法str.islower()

在Python语言中,方法str.islower()的功能是如果字符串中的所有字符都是小写,并且至少有一个字符,则返回True,否则返回False。例如在下面的实例文件linuxidc14.py中,演示了使用方法str.islower()处理字符串的过程。

str = "linuxidc example....wow!!!"

print (str.islower())



str = "linuxidc example....wow!!!"

print (str.islower())

执行后会输出:

False

False

方法str.isnumeric()

在Python语言中,方法str.isnumeric()的功能是如果字符串中的所有字符都是数字字符,并且至少有一个字符,则返回true,否则返回false。数字字符包括数字字符和具有Unicode数字值属性的所有字符。

例如在下面的实例文件linuxidc15.py中,演示了使用方法str.isnumeric()处理字符串的过程。

str = "linuxidc2016"

print (str.isnumeric())



str = "23443434"

print (str.isnumeric())

执行后会输出:

False

True

方法str.isprintable()

在Python语言中,方法str.isprintable()的功能是如果字符串中的所有字符都可打印或字符串为空,则返回true,否则返回false。不可打印字符是在Unicode字符数据库中定义为“其他”或“分隔符”的字符,除了被认为是可打印的ASCII空间(0x20)。(请注意,在此上下文中的可打印字符是在字符串上调用repr()时不应转义的字符,对处理写入sys.stdout或sys.stderr的字符串没有影响。

2.2.18  方法str.isspace()

在Python语言中,方法str.isspace()的功能是如果在字符串中只有空格字符,并且至少有一个字符,则返回True,否则返回False。空格字符是在Unicode字符数据库中定义为“其他”或“分隔符”并且具有双向属性为“WS”、“B”或“S”之一的那些字符。

例如在下面的实例文件linuxidc16.py中,演示了使用方法str.isspace()处理字符串的过程。

str = "       "

print (str.isspace())



str = "linuxidc example....wow!!!"

print (str.isspace())

执行后会输出:

True

False

方法str.istitle()

在Python语言中,方法str.istitle()的功能是如果字符串是标题类型的字符串且至少包含一个字符,则返回 true。例如:大写字符可能只能跟着非标题类(数字、符号和转义字符)的字符和小写字符。否则返回 false。

例如在下面的实例文件linuxidc17.py中,演示了使用方法str.istitle()处理字符串的过程。

str = "This Is String Example...Wow!!!"

print (str.istitle())



str = "This is string example....wow!!!"

print (str.istitle())

执行后会输出:

True

False

方法str.isupper()

在Python语言中,方法str.isupper()的功能是如果所有嵌套中的字符在字符串中都大写,并且嵌套中的至少一个字符则返回 true;否则返回false。例如在下面的实例文件linuxidc18.py中,演示了使用方法str.isupper()处理字符串的过程。

str = "THIS IS STRING EXAMPLE....WOW!!!"

print (str.isupper())



str = "THIS is string example....wow!!!"

print (str.isupper())

执行后会输出:

True

False

方法str.join()

在Python语言中,方法str.join(iterable)的功能是以str作为分隔符,将string所有的元素合并成一个新的字符串。如果string为空,则发生TypeError错误。例如下面的演示过程。

'111'.join('asdfghjkl')

Out[55]: 'a111s111d111f111g111h111j111k111l'



'111'.join()

Traceback (most recent call last):



  File "<ipython-input-56-5fa735339586>", line 1, in <module>

    '111'.join()



TypeError: join() takes exactly one argument (0 given)

例如在下面的实例文件linuxidc19.py中,演示了使用方法str.join()处理字符串的过程。

s1 = "-"

s2 = ""

seq = ("t", "o", "p", "r", "n", "e") # 字符串序列

print (s1.join( seq ))

print (s2.join( seq ))

执行后会输出:

t-o-p-r-n-e

toprne

方法str.ljust()

在Python语言中,方法str.ljust(width,fillchar)的功能是得到一个原始字符串左对齐,并使用fiichar填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原始字符串,与format的填充用法相似。

  1. width:指定长度
  2. fillchar:填充字符串,默认空格字符。

例如在下面的实例文件linuxidc20.py中,演示了使用方法str.ljust()处理字符串的过程。

str = "linuxidc example....wow!!!"



print (str.ljust(50, '*'))

print('111'.ljust(50))

print('111'.ljust(50,'*'))

print('{0:*<50}'.format('111'))

执行后会输出:

linuxidc example....wow!!!***************************

111                                               

111***********************************************

111***********************************************

方法str.lower()

在Python语言中,方法str.lower()的功能是把所有字母转化为小写,功能与str.upper()相反。

例如在下面的实例文件linuxidc21.py中,演示了使用方法str.lower()处理字符串的过程。

str = "linuxidc EXAMPLE....WOW!!!"



print( str.lower() )

执行后会输出:

linuxidc example....wow!!!

方法str.lstrip()

在Python语言中,方法str.lstrip(chars)的功能是删除str左边所有出现在chars子字符串,chars为空时默认空格字符。参数“chars”用于指定截取的字符。例如下面的演示过程。

'     Wo Shi Hao ren   '.lstrip()

Out[67]: 'Wo Shi Hao ren   '



'Wo Shi Hao ren'.lstrip('fdsfsfW')

Out[68]: 'o Shi Hao ren'



'Wo Shi Hao ren'.lstrip('fdsfsfw')

Out[69]: 'Wo Shi Hao ren'

例如在下面的实例文件linuxidc22.py中,演示了使用方法str.lstrip()处理字符串的过程。

str = "     this is string example....wow!!!     ";

print( str.lstrip() );

str = "88888888this is string example....wow!!!8888888";

print( str.lstrip('8') );

执行后会输出:

this is string example....wow!!!    

this is string example....wow!!!8888888

方法str.maketrans()

在Python语言中,方法str.maketrans(x[, y[, z]])的功能是得到一个用于str.translate()的映射,其实就是一个字典。如果只有一个参数,它必须是将Unicode ordinals(整数)或字符(长度为1的字符串)映射到Unicode ordinal,字符串(任意长度)或None的字典。字符键将被转换为序数。如果有两个参数,它们必须是相等长度的字符串,并且在结果字典中,x中的每个字符将被映射到y中相同位置的字符。如果有第三个参数,它必须是一个字符串,在结果中这些字符将被映射到“None”。

例如在下面的实例文件linuxidc23.py中,演示了使用方法str.maketrans()处理字符串的过程。

intab = "aeiou"

outtab = "12345"

trantab = str.maketrans(intab, outtab)



str = "this is string example....wow!!!"

print (str.translate(trantab))

执行后会输出:

th3s 3s str3ng 2x1mpl2....w4w!!!

方法str.partition()

在Python语言中,方法str.partition(sep)的功能是在分隔符首次出现位置拆分字符串,并返回包含分隔符之前部分、分隔符本身和分隔符之后部分的3元组。如果找不到分隔符,返回包含字符串本身,跟着两个空字符串的3元组。

例如在下面的实例文件linuxidc24.py中,演示了使用方法str.partition()处理字符串的过程。

s1 = "I'm a good sutdent."

#以'good'为分割符,返回头、分割符、尾三部分。

s2 = s1.partition('good')

#没有找到分割符'abc',返回头、尾两个空元素的元组。

s3 = s1.partition('abc')



print(s1)

print(s2)

print(s3)

执行后会输出:

I'm a good sutdent.

("I'm a ", 'good', ' sutdent.')

("I'm a good sutdent.", '', '')

方法str.replace()

在Python语言中,方法str.replace(old,new,count)的功能是把字符串中的 old(旧字符串)替换成 new(新字符串),替换不超过count 次,count为空时不限次数。

  1. old:将被替换的子字符串;
  2. new:新字符串,用于替换old子字符串;
  3. max:可选字符串, 替换不超过max次。

例如在下面的实例文件linuxidc25.py中,演示了使用方法str.replace()处理字符串的过程。

str = "www.linuxboy.net.com"

print ("linuxboy主站:", str)

print ("linuxboy论坛:", str.replace("linuxboy.net.com", "linuxidc.net"))



str = "this is string example....wow!!!"

print (str.replace("is", "was", 3))

执行后会输出:

linuxboy主站: www.linuxboy.net.com

linuxboy论坛: www.linuxidc.net

thwas was string example....wow!!!

方法str.rfind()

在Python语言中,方法str.rfind(sub[, start[, end]])的功能是返回被搜索子串最后一次出现在字符串的索引位置,失败则返回-1。

  1. str:查找的字符串;
  2. beg:开始查找的位置,默认为0;
  3. end:结束查找位置,默认为字符串的长度。

例如在下面的实例文件linuxidc26.py中,演示了使用方法str.rfind()处理字符串的过程。

str1 = "this is really a string example....wow!!!"

str2 = "is"



print (str1.rfind(str2))



print (str1.rfind(str2, 0, 10))

print (str1.rfind(str2, 10, 0))



print (str1.find(str2))

print (str1.find(str2, 0, 10))

print (str1.find(str2, 10, 0))

执行后会输出:

5

5

-1

2

2

-1

方法str.rindex()

在Python语言中,方法str.rindex(str, beg=0, end=len(string))的功能是返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常。

  1. str:查找的字符串;
  2. beg:开始查找的位置,默认为0;
  3. end:结束查找位置,默认为字符串的长度。

例如在下面的实例文件linuxidc27.py中,演示了使用方法str.rindex()处理字符串的过程。

str1 = "this is really a string example....wow!!!"

str2 = "is"



print (str1.rindex(str2))

print (str1.rindex(str2,10))

执行后会输出:

5

Traceback (most recent call last):

  File "test.py", line 6, in <module>

    print (str1.rindex(str2,10))

ValueError: substring not found

方法str.rjust()

在Python语言中,方法str.rjust(width[, fillchar])的功能是得到一个原始字符串右对齐,并使用fiichar填充至指定长度的新字符串。若指定的长度小于原字符串的长度则返回原始字符串。与format的填充用法相似。

  1. width:指定填充指定字符后中字符串的总长度;
  2. fillchar:填充的字符,默认为空格。

例如在下面的实例文件linuxidc28.py中,演示了使用方法str.rjust()处理字符串的过程。

str = "this is string example....wow!!!"

print (str.rjust(50, '*'))

执行后会输出:

******************this is string example....wow!!!

方法str.rpartition(char)

在Python语言中,方法str.rpartition(char)的功能是根据字符串char分割str得到一个3元素元组(只识别最后一次出现的字符串)。参数char不能为空,表示指定的分隔符。例如在下面的实例文件linuxidc29.py中,演示了使用方法str.rpartition(char)处理字符串的过程。

str = "

相关内容