#yyds干货盘点#挑战40天从 Python菜鸟变大咖

学向勤中得,萤窗万卷书。这篇文章主要讲述#yyds干货盘点#挑战40天从 Python菜鸟变大咖相关的知识,希望能为你提供帮助。

  • [x] 021.同一运算符_整数缓存问题
  • [x] 022.字符串_unicode字符集_三种创建字符串方式_len()
  • [x] 023.字符串_转义字符_字符串拼接_字符串复制_input()获得键盘输入
  • [x] 024.字符串str()[]提取字符_replace()替换_内存分析
  • [x] 025.字符串_切片slice操作_逆序
  • [x] 026.字符串_split()分割_join()合并_join()效率测试
  • [x] 027.字符串_驻留机制_内存分析_字符串同一判断_值相等判断
  • [x] 028.字符串_常用查找方法_去除首位信息_大小写转换_排版
  • [x] 029.字符串_format格式化_数字格式化操作
  • [x] 030.可变字符串_io.StringIO
一、python 字符串:
  • Python 中字符串被定义为引号之间的字符集合。
  • 字符串是 Python 中最常用的数据类型。我们可以使用引号(或 " )来创建字符串。Python 支持使用成对的 单引号 或 双引号。
  • Python3 直接支持 Unicode,可以表示世界上任何书面语言的字符。Python3 的字符默认就是 16 位 Unicode 编码,ASCII 码是 Unicode 编码的子集。
  • 使用内置函数 ord()可以把字符转换成对应的 Unicode 码;
  • 使用内置函数 chr()可以把十进制数字转换成对应的字符。
【#yyds干货盘点#挑战40天从 Python菜鸟变大咖】
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

  • 创建字符串很简单,只要为变量分配一个值即可。例如:
# 举个例子: t1 = i love Python! print(t1, type(t1))# i love Python! < class str> t2 = "I love Python!" print(t2, type(t2))# I love Python! < class str> print(5 + 8) # 13 print(5 + 8) # 58

二、引号创建字符串:
  • 我们可以通过单引号或双引号创建字符串。例如:a=’abc’; b=”sxt”
  • 使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

  • 连续三个单引号或三个双引号,可以帮助我们创建多行字符串。例如:
Python 字符串的切片与拼接:
  • Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
  • Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
  • 变量[头下标:尾下标]
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

# 字符串的截取与拼接: str1 = I Love LsgoGroup print(str1[:6]) # I Love print(str1[5]) # e print(str1[:6] + " 插入的字符串 " + str1[6:])# I Love 插入的字符串 LsgoGroups = Python print(s) # Python print(s[2:4]) # th print(s[-5:-2]) # yth print(s[2]) # t print(s[-1]) # n# 0、a,b为参数。从字符串指针为a的地方开始截取字符,到b的前一个位置(因为不包含b) var1 = "hello world"; print(var1[a: b]); # 1、如果a,b均不填写,默认取全部字符。即,下面这两个打印结果是一样的 print(var1[: ]); # hello world print(var1); # hello world# 2、如果a填写,b不填写(或填写的值大于指针下标),默认从a开始截取,至字符串最后一个位置 print(var1[3: ]); # lo world# 3、如果a不填写, b填写,默认从0位置开始截取,至b的前一个位置 print(var1[: 8]); # hello wo# 4、如果a为负数,默认从尾部某一位置,开始向后截取 print(var1[-2: ]); # ld# 5、如果a> =b, 默认输出为空。 print(var1[3: 3]); print(var1[3: 2]);

1.2 Python 转义字符:
  • 原始字符串只需要在字符串前边加一个英文字母 r 即可。
  • 在需要在字符中使用特殊字符时,python 用反斜杠 \\ 转义字符。如下表:
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

【示例一】:正常输出文件路径
# 1. 原始字符串只需要在字符串前边加一个英文字母 r 即可: print(rC:\\Program Files\\Intel\\Wifi\\Help)# C:\\Program Files\\Intel\\Wifi\\Help

【示例二】:Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符:
# 2. python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符:para_str = """这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( \\t )。 也可以使用换行符[ \\n ]。 """ print (para_str)这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( )。 也可以使用换行符[ ]# 这是一个多行字符串的实例 # 多行字符串可以使用制表符 # TAB ()。 # 也可以使用换行符[ #]。

【综合示例】:
# \\ # \\"# 在print语句中 输出 ” “ 的方式 print("乔治说:\\"今天会下雨吗?\\"")# 使用转义符print(乔治说:"今天会下雨吗?")# 句子里输出双引号, print() 里面使用 单引号print(" 乔治说:今天会下雨吗? ")# 输出下面的路径 # C:\\Users\\Karl\\Desktop\\test\\background\\abcprint("\\\\Users\\Karl\\Desktop\\\\test\\\\background\\\\abc")# 方法1: 在 \\ 再加一个 \\ print(r"\\Users\\Karl\\Desktop\\test\\background\\abc")# 方法2: 在 语句前面加 r ---> raw 表示按原始字符输出 print("C:/Users/Karl/Desktop/test/background/abc")# 方法3: 将 \\ 变成 /只适用于Windows系统

1.3 Python 字符串运算符:
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

# 1. Python 字符串运算符: a = "Hello" b = "Python"print("a + b 输出结果:", a + b) print("a * 2 输出结果:", a * 2) print("a[1] 输出结果:", a[1]) print("a[1:4] 输出结果:", a[1:4])if ("H" in a): print("H 在变量 a 中") else: print("H 不在变量 a 中")if ("M" not in a): print("M 不在变量 a 中") else: print("M 在变量 a 中")print(r\\n) print(R\\n)# a + b 输出结果: HelloPython # a * 2 输出结果: HelloHello # a[1] 输出结果: e # a[1:4] 输出结果: ell # H 在变量 a 中 # M 不在变量 a 中 # \\n # \\n

1.4 Python 字符串格式化:
  • Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s的字符串中。
  • 在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

【举例说明字符串格式化输出:】
str1 = "abc" str2 = 123 # print(str1 + str2)name = "大师兄" address = "天津市xxxxxx大学软件学院" phone_number = 13888888888# %占位符 # %s ---字符串(string) # %d 表示一个十进制数字decimal # %f 表示一个浮点数类型 print("收件人是%s,地址是%s,电话号码:%d" % (name, address, phone_number))""" 1.定义字符串变量 name ,输出: 我的名字叫 大雄,请多关照! 2.定义整数变量 student_no,输出:我的学号是000004 3.定义小数 price、weight、money,输出 :菠萝单价 9.00元/斤,购买了5.00斤,需要支付45.00元 4.定义一个小数 scale =0.2 ,输出:数据比例是 20.00% """ # 1.定义字符串变量 name ,输出: 我的名字叫 大雄,请多关照! name1 = "大雄" name2 = "胖虎" name3 = "静香" print("我的名字叫 %s,请多关照!" % name3)# 2.定义整数变量 student_no,输出:我的学号是000004 # %06d表示要输出一个 6位的整数,不够的位, # 用0填充,如果这个数大于6,就输出这个数字就可以了 student_no = 1234567 print("我的学号是%06d" % student_no)# 3.定义小数 price、weight、money,输出 :菠萝单价 9.00元/斤,购买了5.00斤,需要支付45.00元、 # %.2f限制小数点后面的位数 # 如果小数的位数不够,也输出指定的位数 price = 9 weight = 5.00 money = price * weight print("菠萝单价 %.2f元/斤,购买了%0.2f斤,需要支付%.2f元" % (price, weight, money))# 4.定义一个小数 scale =0.2 ,输出:数据比例是 20.00% sacle = 0.2 print("数据比例是 %0.2f%%" % (sacle*100))

  • 格式化操作辅助指令:
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

# 格式化字符串:print(%c % 97) # a print(%c %c %c % (97, 98, 99)) # a b c print(%d + %d = %d % (4, 5, 9)) # 4 + 5 = 9 print("我叫 %s 今年 %d 岁!" % (小明, 10)) # 我叫 小明 今年 10 岁! print(%o % 10) # 12 print(%x % 10) # a print(%X % 10) # A print(%f % 27.658) # 27.658000 print(%e % 27.658) # 2.765800e+01 print(%E % 27.658) # 2.765800E+01 print(%g % 27.658) # 27.658 text = "I am %d years old." % 22 print("I said: %s." % text) # I said: I am 22 years old.. print("I said: %r." % text) # I said: I am 22 years old.# a # a b c # 4 + 5 = 9 # 我叫 小明 今年 10 岁! # 12 # a # A # 27.658000 # 2.765800e+01 # 2.765800E+01 # 27.658 # I said: I am 22 years old.. # I said: I am 22 years old..

1.4.1 Python 格式化函数:
  • Python format 格式化函数
【举例说明格式化函数输出一:】
# 1. Python 3.6版本之前的:格式化字符串(%) name = Runoob Hello %s % name print(Hello %s % name)# Hello Runoob# 2. Python 3.6版本之后: # f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号包起来,它会将变量或表达式计算后的值替换进去, # 实例如下: name = Runoob fHello name# 替换变量 Hello Runoob f1+2# 使用表达式 print(name); print(f1+2)# Runoob # 3w = name: Runoob, url: www.runoob.com fw["name"]: w["url"] print(w); print(fw["name"]: w["url"])# name: Runoob, url: www.runoob.com # Runoob: www.runoob.com# 3. Python 3.8的版本中可以使用 = 符号来拼接运算表达式与结果: x = 1 print(fx+1)# Python 3.6# 2x = 1 print(fx+1=)# Python 3.8# x+1=2# 4. Python format 格式化函数:str = "0 Love 1".format(I, Lsgogroup) # 位置参数 print(str) # I Love Lsgogroup str = "a Love b".format(a=I, b=Lsgogroup) # 关键字参数 print(str) # I Love Lsgogroup str = "0 Love b".format(I, b=Lsgogroup) # 位置参数要在关键字参数之前 print(str) # I Love Lsgogroup str = 0:.2f1.format(27.658, GB) # 保留小数点后两位 print(str) # 27.66GB# I Love Lsgogroup # I Love Lsgogroup # I Love Lsgogroup # 27.66GB

【举例说明格式化函数输出二:】
# format """ 不带编号,即“” 带数字编号,可调换顺序,即“2",“1” 带关键字,即“a","tom" """ name = "Sandy" gender = "女" age = 18# 姓名:Sandy,性别:女,今年18岁了 print("姓名:,性别:,今年岁了".format(name, gender, age))# 姓名:Sandy,性别:女,今年18岁了,Sandy是我的好朋友! print("姓名:0,性别:1,今年2岁了,0是我的好朋友!".format(name, gender, age))# 姓名:Sandy,性别:女,今年18岁了,Sandy是我的好朋友! print("姓名:name1,性别:gender2,今年age3岁了,name1是我的好朋友!".format(name1=name, gender2=gender, age3=age))print(f"姓名:name,性别:gender,今年age岁了,name是我的好朋友!")

1.5 Python 的字符串内建函数:
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片

1.5.1 举例说明:
  • capitalize()将字符串的第一个字符转换为大写。
str2 = xiaoxie print(str2.capitalize()) # Xiaoxie

  • lower()转换字符串中所有大写字符为小写。
  • upper()转换字符串中的小写字母为大写。
  • swapcase()将字符串中大写转换为小写,小写转换为大写。
str2 = "DAXIExiaoxie" print(str2.lower()) # daxiexiaoxie print(str2.upper()) # DAXIEXIAOXIE print(str2.swapcase()) # daxieXIAOXIE# daxiexiaoxie # DAXIEXIAOXIE # daxieXIAOXIE

  • count(str, beg= 0,end=len(string))返回strstring里面出现的次数,如果beg或者 end指定则返回指定范围内 str出现的次数
str2 = "DAXIExiaoxie" print(str2.count(xi)) # 2

  • endswith(suffix, beg=0, end=len(string))检查字符串是否以指定子字符串 suffix结束,如果是,返回 True,否则返回 False。如果 begend指定值,则在指定范围内检查。
  • startswith(substr, beg=0,end=len(string))检查字符串是否以指定子字符串substr开头,如果是,返回True,否则返回 False。如果begend指定值,则在指定范围内检查。
str2 = "DAXIExiaoxie" print(str2.endswith(ie)) # True print(str2.endswith(xi)) # False print(str2.startswith(Da)) # False print(str2.startswith(DA)) # True

  • find(str, beg=0, end=len(string))检测 str是否包含在字符串中,如果指定范围 begend,则检查是 否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
  • rfind(str, beg=0,end=len(string))类似于find()函数,不过是从右边开始查找。
str2 = "DAXIExiaoxie" print(str2.find(xi)) # 5 print(str2.find(ix)) # -1 print(str2.rfind(xi)) # 9

  • isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False。
str3 = 12345 print(str3.isnumeric()) # True str3 += a print(str3.isnumeric()) # False

  • ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar (默认空格)填充至长度 width的新字符串。
  • rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar (默认空格)填充至长度 width的新字符串。
str4 = 1101 print(str4.ljust(8, 0)) # 11010000 print(str4.rjust(8, 0)) # 00001101

  • lstrip([chars])截掉字符串左边的空格或指定字符。
  • rstrip([chars])删除字符串末尾的空格或指定字符。
    -strip([chars])在字符串上执行lstrip()rstrip() 。
str5 =I Love LsgoGroup print(str5.lstrip()) # I Love LsgoGroup print(str5.lstrip().strip(I)) #Love LsgoGroup print(str5.rstrip()) #I Love LsgoGroup print(str5.strip()) # I Love LsgoGroup print(str5.strip().strip(p)) # I Love LsgoGrou

-partition(sub)找到子字符串sub,把字符串分为一个三元组 (pre_sub,sub,fol_sub),如果字符串中不包含 sub则返回(原字符串, , ) 。
  • rpartition(sub)类似于 partition( )方法,不过是从右边开始查找。
str5 =I Love LsgoGroup print(str5.strip().partition(o)) # (I L, o, ve LsgoGroup) print(str5.strip().partition(m)) # (I Love LsgoGroup, , ) print(str5.strip().rpartition(o)) # (I Love LsgoGr, o, up)

  • replace(old, new [, max])把 将字符串中的old替换成 new,如果max指定,则替换不超过max次。
str5 =I Love LsgoGroup print(str5.strip().replace(I, We)) # We Love LsgoGroup

  • split(str="", num)不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔 num个子字符串,返回切片后的子字符串拼接的列表。
str5 =I Love LsgoGroup print(str5.strip().split()) # [I, Love, LsgoGroup] print(str5.strip().split(o)) # [I L, ve Lsg, Gr, up]u = "www.baidu.com.cn" # 使用默认分隔符 print(u.split()) # [www.baidu.com.cn] # 以"."为分隔符 print((u.split(.))) # [www, baidu, com, cn] # 分割0次 print((u.split(".", 0))) # [www.baidu.com.cn] # 分割一次 print((u.split(".", 1))) # [www, baidu.com.cn] # 分割两次 print(u.split(".", 2)) # [www, baidu, com.cn] # 分割两次,并取序列为1的项 print((u.split(".", 2)[1])) # baidu # 分割两次,并把分割后的三个部分保存到三个变量 u1, u2, u3 = u.split(".", 2) print(u1) # www print(u2) # baidu print(u3) # com.cn# 去掉换行符: c = say hello baby print(c) # say # hello # baby print(c.split(\\n)) # [say, hello, baby] string = "hello boy< [www.baidu.com]> byebye" print(string.split([)[1].split(])[0]) # www.baidu.com print(string.split([)[1].split(])[0].split(.)) # [www, baidu, com]

  • splitlines([keepends])按照行(\\r, \\r\\n, \\n)分隔,返回一个包含各行作为元素的列表,如果参数keepends为False,不包含换行符,如果为 True,则保留换行符。
str6 = I \\n Love \\n LsgoGroup print(str6.splitlines()) # [I ,Love ,LsgoGroup] print(str6.splitlines(True)) # [I \\n,Love \\n,LsgoGroup]

  • maketrans(intab, outtab)创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也 是字符串表示转换的目标。
  • translate(table, deletechars="")根据参数 table给出的表,转换字符串的字符,要过滤掉的字符放到deletechars参数中。
str = this is string example....wow!!! intab = aeiou outtab = 12345 trantab = str.maketrans(intab, outtab) print(trantab) # 97: 49, 111: 52, 117: 53, 101: 50, 105: 51 print(str.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!

下期预告:
  • 07 TIANCHI_Python_列表
各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。
每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
#yyds干货盘点#挑战40天从 Python菜鸟变大咖

文章图片


    推荐阅读