当前位置:   article > 正文

Python学习笔记(五):数据类型之 String_python rstring

python rstring

字符串(String):

  • python 中的字符串用单引号(' ')或双引号(" ")括起来,同时使用反斜杠(\)对特殊字符进行转义;

  • python 中单引号和双引号用法完全相同;

  • python 中使用三引号(''' 或 """)可以指定一个多行字符串;

  1. #!/usr/bin/python3
  2. str1 = "我是字符串"
  3. str2 = '我也是字符串'
  4. # ''' 或 """ 可以表示多行字符串
  5. # 注意:多行字符串中会保留 换行符 和 空格符
  6. str3 = '''我还是
  7. 字符串'''
  8. print(str1)
  9. print(str2)
  10. print(str3)

输出结果:

 

  • 反斜杠(\)可以用来转义,使用 r 可以让反斜杠不发生转义;如 r"this is line with \n" 则 \n 会显示,而不是换行;r 是 raw 的缩写,raw string 表示原始字符串;
  1. #!/usr/bin/python3
  2. # 修改 print 方法的 end 参数为空,就表示 print 方法输出的数据默认不换行;
  3. # 但是输出的数据中带有换行符(\n),所以下面这句输出还是会换行;
  4. print("this is line with \n", end="")
  5. # 用 r 可以让反斜杠(\)不发生转义,即 \n 不再表示换行,而是作为一个字符串
  6. print(r"this is \n line with")

输出结果:

python 中所有的转义字符如下:

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

 

  • 按字面意思级联字符串,比如 "this " "is " "string" 会被自动转换为 "this is string";

  • 字符串可以用 + 运算符连接在一起;

  1. #!/usr/bin/python3
  2. # 字符串的拼接:直接按字面意思进行拼接
  3. print("this " "is " "string")
  4. # 字符串的拼接:使用 + 号运算符进行拼接
  5. print("this " + "is " + "string")

输出结果:

 

  • python 中的字符串有两种索引方式,从左往右从 0 开始,从右往左从 -1 开始;

  • python 没有单独的字符类型,一个字符就是长度为 1 的字符串;

  • 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]

    注意:截取的区间属于 左闭右开型,即从 "起始" 位开始,到 "结束" 位的前一位结束(不包含结束位本身)

  1. #!/usr/bin/python3
  2. str = "hello world" # 定义一个字符串
  3. print (str) # 输出字符串
  4. print (str[2]) # 输出第三个字符(索引从 0 开始)
  5. print (str[1:7]) # 输出第二个到第八个的所有字符
  6. print (str[2:]) # 输出从第三个开始后面的所有字符
  7. print (str * 2) # 输出字符串两次,也可以写成 print (2 * str)
  8. print (str + " TEST") # 连接字符串

输出结果:

 

  • 用成员运算符 in 或 not in,可以判断字符串中是否包含给定的字符;
  1. #!/usr/bin/python3
  2. str = "hello world" # 定义一个字符串
  3. print("w" in str) # 判断字符 w 是否在 str 中
  4. print("how" in str) # 判断字符串 "hel" 是否在 str 中
  5. print("x" not in str)
  6. print("wor" not in str)

输出结果:

 

  • 字符串的元素是不可以改变的:
  1. #!/usr/bin/python3
  2. str = "hello"
  3. str[2] = "w" # 修改字符串的元素会报错
  4. print(str)

输出结果:

 


python 的字符串内建函数:

1、capitalize():将字符串的第一个字符转换为大写,其他字符变小写;

  1. #!/usr/bin/python3
  2. str = "hEllo WoRld" # 定义一个字符串
  3. print(str.capitalize()) # 将字符串第一个字符转换成大写,其他变为小写(输出结果:Hello world)

2、center(width, fillchar):返回一个原字符串居中对齐,并使用 fillchar 左右填充至指定宽度为 width 的新字符串;如果 width 小于原字符串的长度,则返回原字符串;

  • width:字符串的总长度;

  • fillchar:填充的字符(如果不使用该参数,默认为空格);

3、ljust(width, fillchar):和 center() 用法一样,区别是原字符串左对齐,右填充;

4、rjust(width, fillchar):和 center() 用法一样,区别是原字符串右对齐,左填充;

  1. #!/usr/bin/python3
  2. str = "hello" # 定义一个字符串
  3. # 表示返回一个长度为 20,字符串 str 居中,左右两边为空格的新字符串
  4. print (str.center(20))
  5. # 表示返回一个长度为 20,字符串 str 居中,左右两边用 * 号填充的新字符串
  6. print (str.center(20, '*'))

输出结果:

5、zfill(width):返回指定长度的字符串,原字符串右对齐,前补 0;

print("hello".zfill(10)) # 输出结果:00000hello

6、len(string):返回字符串长度;

7、max(str):返回字符串中最大的字母;

8、min(str):返回字符串中最小的字母;

  1. print (len("world")) # 输出结果:5
  2. print (max("world")) # 输出结果:w
  3. print (min("world")) # 输出结果:d

9、count(sub, start= 0,end=len(string)):用于统计 sub 在 string 中出现的次数,如果 start 或者 end 指定,则返回指定范围内 sub 出现的次数;

  • sub:需要查找的子字符串;

  • start:字符串开始搜索的位置,默认为第一个字符,第一个字符串索引值为 0;

  • end:字符串中结束搜索的位置,默认为字符串的最后一个位置;

  1. #!/usr/bin/python3
  2. str="How are you?I am fine, thank you, and you?"
  3. # 查看字符 o 在 str 中出现的次数
  4. sub='o'
  5. print(str.count(sub))
  6. # 查找子字符串 you 在 str 中出现的次数
  7. sub='you'
  8. print(str.count(sub, 0, len(str)))
  9. # 查找子字符串 you 在 str 索引从 10 到 40 中出现的次数
  10. print(str.count(sub, 10, 40))

输出结果:

10、encode(encoding='UTF-8',errors='strict'):根据给定的 encoding 编码格式编码字符串,如果出错,默认报一个 UnicodeError 的异常,除非 errors 指定的是 "ignore" 或者 "replace";

  • encoding:要使用的编码格式,如 "UTF-8";

  • errors:设置不同错误的处理方案;默认为 "strict",表示编码错误引起一个 UnicodeError;其他可能得值有 'ignore','replace','xmlcharrefreplace','backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

  • 该方法返回一个编码后的字符串,它是一个 bytes 对象;

11、bytes.decode(encoding="utf-8", errors="strict"):字符串对象没有 decode 方法,但我们可以使用 bytes 对象的 decode 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回;

  1. #!/usr/bin/python3
  2. str = "我是中文"
  3. # 编码之后返回的是一个 bytes 对象
  4. str_utf8 = str.encode("UTF-8") # 将字符串以 UTF-8 格式进行编码
  5. str_gbk = str.encode("GBK") # 将字符串以 GBK 格式进行编码
  6. # 输出字符串
  7. print(str)
  8. print("UTF-8编码:", str_utf8)
  9. print("GBK编码:", str_gbk)
  10. # 使用 bytes 对象的 decode 方法进行解码
  11. print("UTF-8解码:", str_utf8.decode("UTF-8"))
  12. print("GBK解码:", str_gbk.decode("GBK"))

输出结果:

12、endswith(substr, start=0, end=len(string)):检查字符串是否以指定子字符串 substr 结尾,如果 start 或者 end 指定,则检查在指定的范围内,是否以 substr 结尾;如果是,返回 True;否则返回 False;

  • substr:该参数可以是一个子字符串或者是一个元素。

  • start:字符串中的开始位置。

  • end:字符串中的结束位置。

13、startswith(substr, start=0, end=len(string)):检查字符串中是否以指定子字符串 substr 开始,如果是,返回 True;否则返回 False。如果 start 和 end 参数存在,则在指定范围内查找;

 

  1. #!/usr/bin/python3
  2. str = "how are you! I am fine, thank you!"
  3. print(str.endswith("you!")) # 字符串是否以 you! 结尾
  4. print(str.endswith("you", 5)) # 从第5个字符开始,字符串是否以 you 结尾
  5. print(str.endswith("fine", 5, 22)) # 从第5个字符开始,到第22个字符结束的字符串里,是否以 fine 结尾
  6. print(str.startswith('how')) # 字符串是否以 how 开头
  7. print(str.startswith('you', 8)) # 从第8个字符开始的字符串是否以 you 开头
  8. print(str.startswith('you', 5, 15)) # 从第5个字符开始到第15个字符结束的字符串是否以 you 开头

输出结果:

14、expandtabs(tabsize=8):把字符串中的 tab 符号('\t')转为空格,tab 符号默认的空格数是 8;

15、find(str, start=0, end=len(string)):检查 str 是否包含在字符串中;如果指定范围 start 和 end,则在指定的范围内检查,如果包含,返回 str 开始的索引值,否则返回 -1;

16、rfind(str, start=0, end=len(string)):和 find() 用法一样,区别是返回 str 最后一次出现的位置;

17、index(str, start=0, end=len(string)):跟 find() 方法一样,只不过如果 str 不在字符串中,会报一个异常;

18、rindex(str, start=0, end=len(string)):用法和 rfind() 一样,区别也是如果 str 不在字符串中,会报一个异常;

 

  1. #!/usr/bin/python3
  2. str1 = "how are you!I am fine, thank you!"
  3. str2 = "you";
  4. print(str1.find(str2)) # 如果 str2 在 str1 中,返回 str2 开始的索引值
  5. print(str1.find(str2, 5)) # 从 str1 的第 5 个字符开始,查找 str2 在 str1 中出现的位置(查到的是第一个 you 的位置)
  6. print(str1.find(str2, 10)) # 从 str1 的第 10 个字符开始,查找 str2 在 str1 中出现的位置(查到的是第二个 you 的位置)
  7. print(str1.find(str2, 10, 20)) # 从 str1 的第 10 个字符开始,到第 20 个字符结束的范围内,查找 str2 的位置(查找不到返回 -1)
  8. print(str1.index(str2, 10, 20)) # index 方法查找不到会报一个异常

输出结果:

19、isalnum():用于检测字符串是否只由字母或数字组成,如果是则返回 True,即只有字母或数字,或者是字母和数字的组合,不能存在其他第三种字符;如果存在其他第三种字符了,就返回 False;

  1. #!/usr/bin/python3
  2. # 只由字母,或数组,或字母和数字的组合,才返回 True
  3. print("1111".isalnum()) # True
  4. print("aaaa".isalnum()) # True
  5. print("11aa".isalnum()) # True
  6. print("aa11".isalnum()) # True
  7. # 只要存在其他第三种字符,就返回 False
  8. print("www.baidu.com".isalnum()) # False
  9. print("hello\tworld".isalnum()) # False

20、isalpha():用于检测字符串是否只由字母和文字(汉字)组成,是则返回 True,否则返回 False;

  1. #!/usr/bin/python3
  2. # 只由字母,或汉字,或字母和汉字的组合,才返回 True
  3. print("aaaa".isalpha()) # True
  4. print("汉字".isalpha()) # True
  5. print("hello你好".isalpha()) # True
  6. # 只要存在除字母和汉字外的其他第三种字符,就返回 False
  7. print("11aa".isalpha()) # False
  8. print("www.baidu.com".isalpha())# False

21、isdigit():用于检测字符串是否只由数字组成,是则返回 True,否则返回 False;

22、isnumeric():用于检测字符串是否只由数字组成,数字可以是:Unicode 数字、全角数字(双字节)、罗马数字、汉字数字;指数与分数也属于数字;是则返回 True,否则返回 False;

23、isdecimal():用于检测字符串是否只包含十进制字符;这种方法只存在于 unicode 对象;是则返回 True,否则返回 False;

 

  1. #!/usr/bin/python3
  2. # isdigit()、isnumeric()、isdecimal() 三个方法都可以用来检测字符串是否只由数字组成;
  3. # isdigit() 可以用来判断一般的数字字符串;
  4. # isnumeric() 可以用来判断一些特殊的数字字符串,比如:Unicode 数字,全角数字(双字节),罗马数字,汉字数字。
  5. # isdecimal() 只可以用来判断只包含十进制数字的字符串;
  6. # 普通数字字符串
  7. print("22".isdigit()) # True
  8. print("22".isnumeric()) # True
  9. print("22".isdecimal()) # True
  10. # Unicode 数字
  11. print("\u00B23455".isdigit()) # True
  12. print("\u00B23455".isnumeric()) # True
  13. print("\u00B23455".isdecimal()) # False
  14. # 罗马数字
  15. print("Ⅱ".isdigit()) # False
  16. print("Ⅱ".isnumeric()) # True
  17. print("Ⅱ".isdecimal()) # False
  18. # 汉字数字
  19. print("一二三".isdigit()) # False
  20. print("一二三".isnumeric()) # True
  21. print("一二三".isdecimal()) # False

24、isspace():用于检测字符串是否只由空白组成;是则返回 True,否则返回 False;

  1. #!/usr/bin/python3
  2. print(" ".isspace()) # True
  3. print("\r".isspace()) # True
  4. print("\n".isspace()) # True
  5. print("\t".isspace()) # True

25、islower():用于检测字符串是否只由小写字符组成;是则返回 True,否则返回 False;

26、isupper():用于检测字符串是否只由大写字符组成;是则返回 True,否则返回 False;

27、istitle():用于检测字符串中是否所有单词的首字母为大写,其他字符为小写;是则返回 True,否则返回 False;

28、title():返回 "标题化" 的字符串,即将字符串中所有单词的首字母变为大写,其余字母变为小写;

 

  1. #!/usr/bin/python3
  2. str = "how are you!"
  3. print(str.istitle()) # False
  4. str = str.title()
  5. print(str) # 将字符串首字母变为大写
  6. print(str.istitle()) # True

输出结果:

29、join(sequence):用于将序列中的元素以指定的字符连接生成一个新的字符串;

  • sequence:要连接的元素序列;

 

  1. #!/usr/bin/python3
  2. str1 = "-"
  3. str2 = "|"
  4. seq = ("h", "e", "l", "l", "o") # 序列
  5. print(str1.join(seq)) # 使用 _ 将序列中的元素连接起来
  6. print(str2.join(seq)) # 使用 | 将序列中的元素连接起来

输出结果:

30、lower():将字符串中所有大写字符转换为小写;

31、upper():将字符串中所有小写字符转换为大写;

32、swapcase():将字符串中的大写字符转换为小写,小写字符转换为大写;

33、lstrip([chars]):截掉(删除)字符串左边的空格或指定字符;

34、rstrip([chars]):截掉(删除)字符串左边的空格或指定字符;

35、strip([chars]):截掉(删除)字符串左边和右边的空格或指定字符;相当于 lstrip() 和 rstrip() 同时使用;

  • 注意:如果参数 chars 不存在,则默认只删除空格;

  • 注意:不能截掉(删除)字符串中间的内容;

  1. #!/usr/bin/python3
  2. str = " how are you "
  3. # 删除字符串左右两边的空格,中间的空格无法删除
  4. print(str.strip())
  5. # 删除字符串左右两边的 you;因为右边还有空格字符,you 不在最右边,所以无法删除
  6. print(str.strip("you"))

输出结果:

36、replace(old, new[, max]):把字符串中的 old 替换成 new;如果指定参数 max,则替换不超过 max 次;

  1. #!/usr/bin/python3
  2. str = "how are you! I am fine, thank you!"
  3. print(str.replace("you", "me")) # 将字符串中的 you 替换成 me
  4. str = "how are you! I am fine, thank you!"
  5. print(str.replace("you", "me", 1)) # 将字符串中的 you 替换成 me,但是只替换 1 次

输出结果:

37、split(str, num):通过指定的分隔符对字符串进行分割;如果第二个参数 num 有值,则分割为 num+1 个子字符串;返回分割后的字符串列表;

  1. #!/usr/bin/python3
  2. str = "how are you! I am fine, thank you!"
  3. print(str.split(" ")) # 以空格进行分割
  4. print(str.split(" ", 3)) # 以空格进行分割,但是只分割成 4 个子字符串
  5. print(str.split("a")) # 以字符 a 进行分割

输出结果:

38、splitlines(keepends):按照行("\r", "\n", "\r\n")进行分割,返回一个包含各行作为元素的列表,如果参数为 False,不包含换行符(默认);如果为 True,则保留换行符;

  1. #!/usr/bin/python3
  2. str = "how are\r you! \nI am fine, \r\nthank you!"
  3. print(str.splitlines()) # 以行进行分割,默认情况不保留换行符
  4. print(str.splitlines(True)) # 以行进行分割,保留换行符

 输出结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/344055
推荐阅读
相关标签
  

闽ICP备14008679号