Python 内置数据类型 01----字符串

目录

1. 字符串 str 简介

1.1 字符串的创建

1.1.1 使用单引号 ' 或者双引号 ” 创建字符串

1.1.2 使用三引号 ''' 或者 """ 创建字符串

1.2 转义字符

1.2.1 转义字符列表

1.2.2 r 字符串

​ 1.2.3 repr 字符串

1.3 字符串格式化

2. 字符串切片功能

2.1 字符串切片语法

2.2 字符串切片示范

2.2.1 读取单独字符

2.2.2 正向读取子字符串

2.2.3 负向读取子字符串

2.2.3 不同步长读取子字符串

3. 处理字符串的常见内置函数

3.1 print 函数

3.2 max 函数

3.3 min 函数

3.4 int 函数、float 函数

3.5 ord 函数、chr 函数

3.6 len 函数

3.7 bin 函数、oct 函数 、hex 函数

3.8 sorted 函数

3.9 list 函数

3.10 tuple 函数

3.10 set 函数

3.11 iter 函数

 3.12 slice 函数

 3.13 str 函数

 3.14 filter 函数

4. 字符串的内置方法

4.1  .capitalize()

4.2   .center(width)

4.3   .count( beg=0, end=len(string))

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

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

4.6  .endswith(obj, beg=0, end=len(string))

4.7  .expandtabs(tabsize=8)

4.8  .find(str, beg=0, end=len(string))

4.9  .format()

4.10 .index(str, beg=0, end=len(string))

4.11 .isalnum()

4.12 .isalpha()

4.13 .isdecimal()

4.14 .isdigit()

4.15 .islower()

4.16 .isnumeric()

4.17 .isspace()

 4.18 .istitle()

4.19 .isupper()

4.20 .join(seq)

4.21 .ljust(width)

4.22 .lower()

4.23 .lstrip(chars=None)

4.24 .maketrans(intab, outtab])

4.25 .partition(str)

4.26 .replace(str1, str2,  num=string.count(str1))

4.27 .rfind(str, beg=0,end=len(string) )

4.28 .rjust(width)

4.29 .rpartition(str)

4.30 .rstrip(chars=None)

4.31 string.split(str="", num=string.count(str))

4.32 .splitlines([keepends])

4.33 .startswith(obj, beg=0,end=len(string))

4.34 .strip([obj])

4.35 .swapcase()

4.36 .title()

4.37 .translate(str, del="")

4.38 .upper()

4.39 .zfill(width)

4.40  .casefold()       Python3 引入

4.41  .format_map(mapping)       Python3 引入

4.42  .isidentifier()       Python3 引入

5. 字符串和运算符

5.1 + 运算符

5.2 * 运算符

5.3 in 、not in 运算符

6. 字符串-常用内置模块 RE


1. 字符串 str 简介

        字符串是 Python 基本数据类型之一,与人类自然语言非常接近。在 Python 中它的类型就是 str 。

1.1 字符串的创建

1.1.1 使用单引号 ' 或者双引号 ” 创建字符串

str1 = 'Hello World!'
str2 = "I like the world!"
 
print(str1,str2)

 如果需要在单引号 ' 或者双引号 ” 创建的字符串中使用单引号 ' 或者双引号 ”,那么很简单,想用双引号的就用单引号分割边界,想用单引号的就用双引号分割边界。

str1 = 'Hello "My" World!'
str2 = "I 'always'like the world !"
 
print(str1,str2)

那如果既想使用单引号又想使用双引号怎么办呢,可以使用三引号来分割边界!

1.1.2 使用三引号 ''' 或者 """ 创建字符串

str3='''
"Hello world"
'I like the World'
'''

str4="""
"Hello world"
'I like the World'
"""


print(str3)
print("*"*20)
print(str4)

使用三引号还可以实现自然分行,就把两个三引号之间的字符串打印出来即可。 

1.2 转义字符

1.2.1 转义字符列表

        转义字符一般是以 \ 符号开头,来表示一些特定的符号。这些在不同的编程语言中,都是基本上通用的。

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\'单引号
\"双引号
\a响铃
\b退格(Backspace)
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
\xyy十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

 下面是一些简单的用法:

# 不使用转义字符 
str3="Hello World!"

#使用转义字符 \n 换行
str4="Hello \n World!" 

#使用转义字符 \000 空
str5="Hello\000World!"

print("*"*20)
print(str3)
print("*"*20)
print(str4)
print("*"*20)
print(str5)

有一种方法可以让转义字符失效,即在 "\" 符号之前再放一个  "\" 。

# 不使用转义字符 
str3="Hello World!"

# 取消转义字符 \n 换行
str4="Hello \\n World!" 

# 取消转义字符 \000 空
str5="Hello\\000World!"

print("*"*20)
print(str3)
print("*"*20)
print(str4)
print("*"*20)
print(str5)

但是如果我不是想用用"\"取消转义字符呢,毕竟这样太复杂了,还得数 “\” 个数。我就是单纯的想写 “\n” 这些字符串。 那么我们就需要用到了 r 字符串。

1.2.2 r 字符串

r 字符串就是在字符串开头使用 r 标识,所见即所得,解释器就不会替换字符串中的转义字符了。

# 不使用转义字符 ,r 字符串
str3=r"Hello World!"

#使用转义字符 \n 换行,r 字符串
str4=r"Hello \n World!" 

#使用转义字符 \000 空,r 字符串
str5=r"Hello\000World!"

print("*"*20)
print(str3)
print("*"*20)
print(str4)
print("*"*20)
print(str5)

 1.2.3 repr 字符串

        除了 r 字符串,还可以用 repr 函数,它也可以取消转义字符。这个函数的本意就是打印原始字符串。

# 不使用转义字符 ,repr字符串
str3=repr("Hello World!")

#使用转义字符 \n 换行,repr字符串
str4=repr("Hello \n World!" )

#使用转义字符 \000 空,repr字符串
str5=repr("Hello\000World!")

print("*"*20)
print(str3)
print("*"*20)
print(str4)
print("*"*20)
print(str5)

1.3 字符串格式化

        字符串格式化在不同的编程语言都会反复使用,但是在 Python 中,现在越来越多的人使用 format,相应的使用字符串格式化的场合就少了。因为要正确的使用字符串格式化,就需要明确字符串所代表的类型。

简单示范如下:

str1="I am %d years old!" % 36
str1

 

 符   号描述
      %c 格式化字符及其ASCII码
      %s 格式化字符串
      %d 格式化整数
      %u 格式化无符号整型
      %o 格式化无符号八进制数
      %x 格式化无符号十六进制数
      %X 格式化无符号十六进制数(大写)
      %f 格式化浮点数字,可指定小数点后的精度
      %e 用科学计数法格式化浮点数
      %E 作用同%e,用科学计数法格式化浮点数
      %g %f和%e的简写
      %G %F 和 %E 的简写
      %p 用十六进制数格式化变量的地址

2. 字符串切片功能

       在 Python 中字符串切片功能太重要了,所以单独列出来说

2.1 字符串切片语法

        字符串[开始索引:结束索引:步长]

        开始步长:从 0 到字符串长度

        结束索引:可以是0或者正数,即第一个字符从左到右数;也可以是负数,即从右到左数。

        步长:默认是1,也可以是其他正整数。

2.2 字符串切片示范

2.2.1 读取单独字符

str1 = 'I am a nice girl!'
# 读取单独的一个字符
# 1. 读取第一个
print(str1[0])

# 2. 读取第三个
print(str1[2])

# 3. 读取最后一个
print(str1[-1])

  

2.2.2 正向读取子字符串

str1 = 'I am a nice girl!'
# 读取正向子字符串
# 1. 读取第一个到第四个
print(str1[0:4])
print(str1[:4])

# 2. 读取第五个到最后
print(str1[4:])

# 3. 读取全部
print(str1[:])

2.2.3 负向读取子字符串

str1 = 'I am a nice girl!'
# 读取负向子字符串,
# 从第3个位置到最后一个位置,无法负向,所以得到空列表
print("*"*25)
print(str1[2:-1:-1])
print(str1[:-1:-1])

print("*"*25)
# 从倒数到最后,等同于str1[::-1]
print(str1[-1::-1])
print(str1[::-1])

print("*"*25)
# 从第 6 个位置向第 1 个位置负向取值
print(str1[5:0:-1])

2.2.3 不同步长读取子字符串

str1 = 'I am a nice girl!'
# 按照不同步长读取
# 正向,从 0 位置开始,步长为 2
print("*"*25)
print(str1[::2])

# 负向,从最后一个开始读取,步长为 3
print("*"*25)
print(str1[::-3])

3. 处理字符串的常见内置函数

3.1 print 函数

# 关于 print 函数的使用
# 1. 在同时输入多个参数时候,指定分隔符,而不是使用默认的空格
a=10
b="hi"
print("*"*20)
print(a,b,sep=",")

# 2.print 使用完毕后,不换行,即把 end 参数默认的换行符换成自己想要的其他字符
print("*"*20)
print(a)
print(a,end=" ")
print(a,end="/")

# 3.print 格式化输出 %s %d %f 等
print("*"*20)
print("%d %s" % (a,b))

3.2 max 函数

        max(str) 返回字符串 str 中最大的字母。

3.3 min 函数

        min(str)返回字符串 str 中最小的字母。

3.4 int 函数、float 函数

        int(str) 、float(str) 返回字符串 str 代表的数值,前提是 str 符合数值写法,否则报 ValueError 错误。

str1="0"
str2="1.3"
str3="0b1100"
str4="a"
print(int(str1))
print(float(str2))
print(int(str3,base=2))
print(int(str4))

3.5 ord 函数、chr 函数

        chr 函数返回整数所对应的 Unicode 字符。

        ord 函数返回Unicode 字符所对应的整数。

3.6 len 函数

        得到字符串长度的函数。

3.7 bin 函数、oct 函数 、hex 函数

        bin 函数:将整数转换成二进制的字符串

        oct 函数 :将整数转换成八进制的字符串

        hex 函数:将整数转换成十六进制的字符串

a=10
print(bin(a))
print(oct(a))
print(hex(a))

3.8 sorted 函数

        sorted 函数可以将一个字符串转换成排好序的字符列表。 

>>> sorted("fgsfgasd")
['a', 'd', 'f', 'f', 'g', 'g', 's', 's']

3.9 list 函数

        list 函数可以将一个字符串转换成字符列表。 

>>> list("fgsfgasd")
['f', 'g', 's', 'f', 'g', 'a', 's', 'd']

3.10 tuple 函数

        tuple 函数可以将一个字符串转换成字符元组。 

>>> tuple("fgsfgasd")
('f', 'g', 's', 'f', 'g', 'a', 's', 'd')

3.10 set 函数

        set 函数可以将一个字符串转换成字符集合。 

>>> set("fgsfgasd")
{'g', 'a', 's', 'd', 'f'}

3.11 iter 函数

        iter 函数可以将一个字符串转换成可迭代对象。 

>>> b=iter("fgsfgasd")
>>> b
<str_iterator object at 0x00000253047E18B0>
>>> for tmp in b:
	print(tmp,end="-")

	
f-g-s-f-g-a-s-d-

 3.12 slice 函数

        slice 函数可以将一个字符串转换成切片对象。 

>>> myslice = slice(5)
>>> "fgsfgasd"[myslice]
'fgsfg'

 3.13 str 函数

        str 函数可以将其他类型的对象转换成字符串类型的对象。 

 3.14 filter 函数

        filter 函数可以过滤字符串对象。 

>>> list(filter(lambda x:x!="f","fgsfgasd"))
['g', 's', 'g', 'a', 's', 'd']

4. 字符串的内置方法

        前面说了字符串其实一个类 str,既然是一个类,它就有其内置方法。常见的内置方法如下,这些方法都比较简单,会用简单的代码演示一下即可。

4.1  .capitalize()

        把字符串的第一个字符大写。

str1 = 'hello  world!'
print(str1.capitalize())

 

4.2   .center(width)

        返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

str1 = 'hello  world!'
print(str1)
print(str1.center(30))

4.3   .count( beg=0, end=len(string))

        返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数。

str1 = 'hello  world!'
print(str1.count("l"))
print(str1.count("l",2,3))

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

        以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

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

        以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'

4.6  .endswith(obj, beg=0, end=len(string))

        检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False。

str1 = 'hello  world!'
print(str1.endswith("!"))
print(str1.endswith("!",2,3))

4.7  .expandtabs(tabsize=8)

        把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。

>>> a="	adb"
>>> print(a)
	adb
>>> print(a.expandtabs())
        adb
>>> print(a.expandtabs(tabsize=16))
                adb
>>> print(a.expandtabs(tabsize=32))
                                adb
>>> print(a.expandtabs(tabsize=8))
        adb
>>> 

4.8  .find(str, beg=0, end=len(string))

        检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1。

str1 = 'hello  world!'
print(str1.find("A"))
print(str1.find("l"))
print(str1.find("l",1,3))
print(str1.find("l",4,5))

 

4.9  .format()

        格式化字符串。这是一个非常有用的功能。

str1 = 'Hello'
str2 ="World"
str3="{0} {1}".format(str1,str2)
print(str3)

 

4.10 .index(str, beg=0, end=len(string))

        跟 find() 方法一样,只不过如果 str 不在 string 中会报一个异常。

4.11 .isalnum()

        如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。

str1 = 'hello  world!'
str2 = "12345"
str3 = "ABCD"
str4 = "_+-^"
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
print(str4.isalnum())

 

4.12 .isalpha()

        如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。

4.13 .isdecimal()

        如果 string 只包含十进制数字则返回 True 否则返回 False。

4.14 .isdigit()

        如果 string 只包含数字则返回 True 否则返回 False。

4.15 .islower()

        如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False。

4.16 .isnumeric()

        如果 string 中只包含数字字符,则返回 True,否则返回 False。

4.17 .isspace()

        如果 string 中只包含空格,则返回 True,否则返回 False。

 4.18 .istitle()

        如果 string 是标题化的(见 title())则返回 True,否则返回 False。

4.19 .isupper()

        如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False。

4.20 .join(seq)

        以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。

a=["a","b","c"]
print("".join(a))
print("-".join(a))
print("~".join(a))

 

4.21 .ljust(width)

        返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串。

4.22 .lower()

        转换 string 中所有大写字符为小写。

4.23 .lstrip(chars=None)

        截掉 string 左边的空格。

4.24 .maketrans(intab, outtab])

        maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。

str1 = 'I am a nice girl!'
a=str1.maketrans("abcdefh","1234567")
str1.translate(a)

4.25 .partition(str)

        有点像 find() 和 split() 的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string。

str1 = 'I am a nice girl!'
print(str1.partition("am"))

 

4.26 .replace(str1, str2,  num=string.count(str1))

        把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次。

4.27 .rfind(str, beg=0,end=len(string) )

        类似于 find() 函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。

4.28 .rjust(width)

        返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。

4.29 .rpartition(str)

        类似于 partition()函数,不过是从右边开始查找。

4.30 .rstrip(chars=None)

        删除 string 字符串末尾的空格。

4.31 string.split(str="", num=string.count(str))

        以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串。

4.32 .splitlines([keepends])

        按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

4.33 .startswith(obj, beg=0,end=len(string))

        检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

4.34 .strip([obj])

        在 string 上执行 lstrip() 和 rstrip()。

4.35 .swapcase()

        翻转 string 中的大小写。

4.36 .title()

        返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。

4.37 .translate(str, del="")

        根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中。

4.38 .upper()

        转换 string 中的小写字母为大写。

4.39 .zfill(width)

        返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0。

4.40  .casefold()       Python3 引入

         casefold() 方法是 Python 3.3 版本之后引入的,其效果和 .lower() 方法非常相似,都可以转换字符串中所有大写字符为小写。两者的区别是:lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。

4.41  .format_map(mapping)       Python3 引入

        在 Python3 中引入了 .format_map(mapping) 方法进行字符串格式化,相对于 .format() 方法,它对于字符串格式中可变数据参数来源于字典等映射关系数据时,代码更加轻简。但是 .format 方法适用性更广。
        .format_map 的参数不需传入“关键字=真实值”,而是直接传入真实的字典名即可。

girl={"name":"ada","age":"10","location":"beijing"}

#使用format输出相关信息:
print("*"*40)
s1="{man[name]} is {man[age]} years old and live in {man[location]}".format(man=girl)
print(s1)

#改用format_map方法后代码如下:
print("*"*40)
s2="{name} is {age} years old and live in {location}".format_map(girl)
print(s1)

 

4.42  .isidentifier()       Python3 引入

            isidentifier() 方法用于判断字符串是否是有效的 Python 标识符,可用来判断变量名是否合法。

5. 字符串和运算符

5.1 + 运算符

        + 运算符可以将两个字符串相连。

str1="love & love!"
print(str1+"  "+ str1)
print(str1*3)

5.2 * 运算符

        * 运算符可以将字符串按指定倍数递增。

>>> str1 = 'ABCDEF!'
>>> print(str1*3)
ABCDEF!ABCDEF!ABCDEF!

5.3 in 、not in 运算符

        in 运算符判断某个字符串是另外一个字符串的子串

        not in 运算符判断某个字符串不是另外一个字符串的子串

str1="love & love!"
print("love" in str1)
print("Love" not in str1)

6. 字符串-常用内置模块 RE

        对于字符串还有很多操作,例如搜索、替换、删除等等,有兴趣的可以参看下面这个模块,了解更多。

Python 正则表达式使用--Re 模块详解_江南野栀子的博客-CSDN博客_正则表达式re模块

'''

要是大家觉得写得还行,麻烦点个赞或者收藏吧,想个博客涨涨人气,非常感谢!

'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江南野栀子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值