python数值与字符串
Bruce小鬼 人气:0python数值与字符串高级用法
1.概述
这篇是一篇没有尽头的文章,每当过段时间,再次打开就会看到不一样的内容,有新东西在更新啊。是啊,之所以取名为高级用法,就是因为它是连载的,一个个有趣的知识点就像是一个个故事。每读一遍都有新的收获。
2.数值
2.1.美化数值
在定义数值字面量时,如果数字特别长可以通过插入_分隔符来让他变得更易读
# 格式化数值:在定义数值字面量时,如果数字特别长,可以通过插入_分隔符来变得更易读 # 以千为分隔单位,输出结果(num值为:10000) num = 1_000_0 print(f'num值为:{num}') # 输出结果 num值为:10000
补充:Python数值和字符串
数值类型
## 整型 i0 = 3 #int(x)这种方法通常在类型转换的时候使用,python定义数字一般就用最简单的 i1 = int(2) print("i0 = {}".format(i0)) print("i1 = {}".format(i1)) ## 浮点型 f0 = 3.14 f1=float(3.1415) print("f0 = {}".format(f0)) print("f1 = {}".format(f1)) ## bool型 #bool型是int型子类 print("isinstance(True,int):{}".format(isinstance(True,int))) print("issubclass(bool,int):{}".format(issubclass(bool,int))) ## 算数运算 #+ - * / % // ** #/ 始终返回一个浮点数 #// 地板除,返回值取决于除数和被除数类型 #% 公式:a%b = a - (a/b)*b python中结果向负无穷方向舍入,以b的结果为准 golang中结果正负以a为准 print("i0/i1 = {}".format(i0/i1)) print("i0//i1 = {}".format(i0//i1)) print("f0//f1 = {}".format(f0//f1)) print("i0**i1 = {}".format(i0**i1)) ## 逻辑运算 #< > <= >= == != print("f1 > i1 : {}".format(f1>i1)) # is 用于比较是否是同一个对象 ## 位运算 # << 左移一位相当于*2 # >> 右移一位相当于/2 print("i1 << 1:{}".format(i1<<1)) ## 进制转换 #bin() 转换为二进制 #oct() 转换为八进制 #hex() 转换为十六进制 print("dec:{}->bin:{}".format(i1,bin(i1))) ## 类型转换 print("float:{}->int:{}".format(f1,int(f1))) ## math库 #import math ------------------------------ i0 = 3 i1 = 2 f0 = 3.14 f1 = 3.1415 isinstance(True,int):True issubclass(bool,int):True i0/i1 = 1.5 i0//i1 = 1 f0//f1 = 0.0 i0**i1 = 9 f1 > i1 : True i1 << 1:4 dec:2->bin:0b10 float:3.1415->int:3
字符/字符串
####定义 # 用 "" 或者 '' s1 = 'abcde' s2 = "abcd" print("s1 type is {}".format(type(s1))) print("s2 type is {}".format(type(s2))) print("s1:{}".format(s1)) ####方法 ### 增 # s1 = str.join(s2) 括号中为可迭代对象,在s2中每两个字符之间插入s1,返回新字符串 lst1 = ["x", "y", "z"] s3 = s1.join(s2) print("s3:{}".format(s3)) s4 = s1.join(lst1) print("s4:{}".format(s4)) ### 删 ### 改 ##str.split(seq=None,maxsplit=-1) # 将字符串按seq分割为若干片段,默认seq为空白字符(空格,tab等),返回列表 # maxsplit 指定分割次数,-1表示遍历字符串,分割1次结果为两段 # str.rsplit() 作用是从右侧开始分割 # str.splitlines([keepends]) 按换行符切换 [True]表示保留换行符 s5 = "0a1a2a3a4a5a6" print("s5.split:{}".format(s5.split("a"))) ##str.upper() 全大写 print("s1.upper():{}".format(s1.upper())) ##str.lower() 全小写 print("s1.lower():{}".format(s1.lower())) ##str.swapcase() 大小写互换 print("s1.swapcase():{}".format(s1.swapcase())) ##str.replace(old,new[,count]) 将字符串中的old替换为new,count为替换次数,返回新字符串 print("s5.replace(\"a\",\"b\",3):{}".format(s5.replace("a", "b", 3))) ##str.strip([str]) 去除两侧的字符串, str.lstrip() 左侧去除 str.rstrip() 右侧去除 s6 = "abc xxx def" print("s6.strip(\"abc\"):{}".format(s6.strip("abc"))) ##拼接 直接用加号拼接 ### 查 ##索引,通过索引索引 str[i] ##切片 str[begin:end:step] 从begin到end 步长为step,当step为负数的时候表示从右到左,str[::-1]逆序输出 print("s6[0:4:2]:{}".format(s6[0:4:2])) print("s6[::-]:{}".format(s6[::-1])) ##len(str) print("len(s1):{}".format(len(s1))) ##str.count() 查找字符串中子串出现的次数 print("s6.count(\"abc\"):{}".format(s6.count("abc"))) ##str.find(sub[,begin[,end]]) 从左到右,左开右闭,返回索引,找不到返回-1 print("s1.find(\"a\"):{}".format(s1.find("a"))) ##str.rfind(sub[,begin[,end]]) 从右到左,左开右闭,返回索引,找不到返回-1 print("s1.rfind(\"z\"):{}".format(s1.find("z"))) ##str.index(sub[,begin[,end]]) 从左到右,左开右闭,返回索引,找不到返回 ValueError: substring not found print("s1.index(\"a\"):{}".format(s1.index("a"))) ##str.rindex(sub[,begin[,end]]) 从右到左,左开右闭,返回索引,找不到返回 ValueError: substring not found # print("s1.rindex(\"z\"):{}".format(s1.rindex("z"))) ValueError: substring not found ##str.endswith(suffix[,start[,end]]) 判断str是否以suffix结尾,返回bool值 print("s6.endswith(\"abc\"):{}".format(s6.endswith("abc"))) ##str.startswith(prefix[,start[,end]]) 判断str是否以prefix结尾,返回bool值 print("s6.startswith(\"xyz\"):{}".format(s6.startswith("xyz"))) ##str.isdigit() 判断字符串是不是只有数字,返回bool型 print("s1.isdigit():{}".format(s1.isdigit())) ##str.isalpha() 判断字符串是不是只有字母,返回bool型 print("s1.isalpha():{}".format(s1.isalpha())) ##str.isupper() 判断字符串是不是只有大写字母,返回bool型 print("s1.isupper():{}".format(s1.isupper())) ####补充 # str是不可变对象 # r/R后接字符串表示字符串中所有字符都不做转义 print("'12345\\n' " + '12345\n') print("r'12345\\n' " + r'12345\n') ---------------------------------------------- s1 type is <class 'str'> s2 type is <class 'str'> s1:abcde s3:aabcdebabcdecabcded s4:xabcdeyabcdez s5.split:['0', '1', '2', '3', '4', '5', '6'] s1.upper():ABCDE s1.lower():abcde s1.swapcase():ABCDE s5.replace("a","b",3):0b1b2b3a4a5a6 s6.strip("abc"): xxx def s6[0:4:2]:ac s6[::-]:fed xxx cba len(s1):5 s6.count("abc"):1 s1.find("a"):0 s1.rfind("z"):-1 s1.index("a"):0 s6.endswith("abc"):False s6.startswith("xyz"):False s1.isdigit():False s1.isalpha():True s1.isupper():False '12345\n' 12345 r'12345\n' 12345\n
加载全部内容