吾,小白尔,所见所闻,冰山一角矣,,
---------------------------------------------------------分割线-----------------------------------------------------
字符串的方法有很多,常用的要牢记。
1.字符串,创建方法很简单,采用引号的方式就能创建。
字符串是不可变类型。
str1 = "JD-YY"
str2 = '123'
创建了两字符串,使用单引号和双引号都可以。
2.获取字符串中的值
str1 = "JD-YY"
str2 = '1234'
print(str1[0]) #下标的方式获取字符串中的内容,第一个字符的下标为0,以此类推。
print(str2[1:3]) #切片的方式去截取字符串中的内容,形成一个左闭右开的区间片段。
注意,和C一样,第一个位置的下标为0。
3.字符串的内容可以被更新替换。
str = "hello JD-YY"
str = str[:6]+"123" #省略左边区间的数值,相当于从0位开始。
print(str)
#打印结果
hello 123
字符串之间是可以相加的。
4.转译符。
在字符中常常需要使用符号,有些字符已经被Python内部使用了,我们再去使用的时候就需要去进行转译。
| 转义字符 | 描述 |
|---|---|
| \(在行尾时) | 续行符 |
| \\ | 反斜杠符号 |
| \' | 单引号 |
| \" | 双引号 |
| \a | 响铃 |
| \b | 退格(Backspace) |
| \e | 转义 |
| \000 | 空 |
| \n | 换行 |
| \v | 纵向制表符 |
| \t | 横向制表符 |
| \r | 回车 |
| \f | 换页 |
| \oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
| \xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
| \other | 其它的字符以普通格式输出 |
特别的,按原有形式输出字符,在字符串前面加上r或是R
print(r"\n")
#打印结果
\n
5.字符串格式化输出(这是一个很重要的内容,很常用)
先记住:%s,可以接受一切内容,不需要去区分。
| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
以上是其他的格式化输出时需要用到的符号,看具体使用的情况去区分。
%格式化的格式:
%[(name)][flags][width].[precision]typecode
(1)(name) 可选,用于选择指定的key
dic = {"name":"JD-YY","age":"18"}
str = "my %(name)s ,age is %(age)s" % dic #字典的格式传入参数
print(str)
#打印结果
my JD-YY ,age is 18
(2)flags 可选,可供选择的值有:
+ 右对齐;正数前加正号,负数前加负号;
- 左对齐;正数前无符号,负数前加负号;
空格 右对齐;正数前加空格,负数前加负号;
0 右对齐;正数前无符号,负数前加负号;用0填充空白处
(3)width 可选,占有宽度
(4).precision 可选,小数点后保留的位数
(5)typecode 必选
s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
o,将整数转换成 八 进制表示,并将其格式化到指定位置
x,将整数转换成十六进制表示,并将其格式化到指定位置
d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F,同上
g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
%,当字符串中存在格式化标志时,需要用 %%表示一个百分号
方法如上:不一一举例,在实际用遇到了再补充,
a = 100 b = 50 print("他有%s块糖,我有%s块糖" % (a, b)) #传入两个以上参数时,要以元组的格式传入。 print("他有%5s块糖,我有%5s块糖" % (a, b)) #打印结果占5个字符,不够的用空格补齐。 print("他有%+5s块糖,我有%-5s块糖" % (a, b)) #“+”代表右对齐,“-”代表左对齐。 #打印结果 他有100块糖,我有50块糖 他有 100块糖,我有 50块糖 他有 100块糖,我有50 块糖
a = 10.9671 b = 90.3 print("%f%%,%f%%" % (a,b)) #默认小数点后六位,,不足的自动补零 %%这是百分号转译符 print("%5.2f%%,%5.2f%%" %(a,b)) #5个有效位,小数点后两个有效数字,四舍五入,不足的补零 #打印结果 10.967100%,90.300000% 10.97%,90.30%
6.字符串内置方法
(1)将字符串中的首字母大写,其它字母小写。
str.capitalize() #没有参数,返回值是一个首字符大写的字符串
str1 = "heLlo WoRld" str2 = "h123哈哈" str1 = str1.capitalize() str2 = str2.capitalize() #一个字符串的首字母大写,其它字符,不区分大小写,均处理成小写,数字和汉字没有变化。 print(str1) print(str2) #打印结果 Hello world H123哈哈
(2)将字符串中所有的字母变成小写
str.casefold() #其他国家的大小写对应关系也可以转换
str.lower() #英语 A-->a
str = "aASDSWDFSssadf" v1 = str.casefold() v2 = str.lower() print(v1) print(v2)
#打印结果
aasdswdfsssadf
aasdswdfsssadf
(3)将字符串居中
str.center(width[, fillchar]) #返回值是一个新的字符串,总长度为传入参数width,将原字符串放在中间位置,字符串前后用fillchar填充,默认为空格
str = "JD-YY" v1 = str.center(15) v2 = str.center(15,"*") print(v1) print(v2) #打印结果 JD-YY *****JD-YY*****
(4)查询指定字符串在某个字符中出现的次数
str.count(sub, start= 0,end=len) #sub -- 搜索的子字符串 #start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。 #end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
str = "aabccdcddba" v1 = str.count("a") v2 = str.count("a",5) v3 = str.count("b",5,10) print(v1) print(v2) print(v3) #打印结果 3 1 1
(5)encode()和decode()方法
#字符串 ---->encode ----> bytes 编码 #bytes ---->decode ---->字符串 解码
str.encode(encoding='UTF-8') #encoding -- 要使用的编码,如"UTF-8"。
str.decode(encoding='UTF-8') #encoding -- 要使用的编码,如"UTF-8"。
u = "hello 你好" str1= u.encode(encoding="utf-8") #将字符串使用utf-8格式进行编码 str2 = u.encode(encoding="gbk") #gbk格式编码 print(str1) print(str2) s1 = str1.decode(encoding="utf-8") #按照编码格式进行解码 s2 = str2.decode(encoding="gbk") #gbk格式进行解码 print(s1) print(s2) s3 = str1.decode("gbk") #解码格式和编码格式不匹配 print(s3) #打印结果 b'hello \xe4\xbd\xa0\xe5\xa5\xbd' b'hello \xc4\xe3\xba\xc3' hello 你好 hello 你好 hello 浣犲ソ #解码格式和编码格式不匹配,会导致解码失败,在Python2中,会直接报错
(6)查询字符串中是否含有指定的字符,如果有,返回指定字符串的开始索引值,没有返回“-1”
str.find(s, beg=0, end=len) #s -- 指定检索的字符串 #beg -- 开始索引,默认为0。 #end -- 结束索引,默认为字符串的长度。
str = "asdaffasefsdsdfaegsdfasdfa" s = "fa" s1 ="J" res = str.find(s) #默认从起始位置0开始,到最后一个字符查找 res1 = str.find(s1,8,15) print(res) print(res1) #打印结果 5 #即使字符中包含多个目标字符串,只会定位第一个,返回其索引值 -1 #当没有查询到目标字符串时,返回“-1”
(7)格式化字符串format
str = "{}{}".format("ni","hao") #不指定传入顺序时,按照默认从左到右的顺序传入 print(str) str = "{}{}".format("hao","ni") print(str) str = "{1}{0}".format("hao","ni") #按照指定的顺序传入 print(str) str = "{1}{3}{0}".format("J","D","Y","你好") #按照指定的顺序传入 print(str) #打印结果 nihao haoni nihao D你好J
li = ["JD-YY",25] str = "my name is {},age is {}".format(*li) #列表作为传入值的时候,需要在列表前面加上*,接着按照列表中数据的顺序去依次传入 print(str) li1 = ["limo",24,"haha"] str = "my name is {0[0]},age is {0[1]}".format(li1) #列表做为传入值时的另外一种写法,0[1],前面的0不能省略 print(str) str = "网站名:{name},网址:{url}".format(name = "丿小白不白丨",url = "https://home.cnblogs.com/u/JD-YY/") #根据变量名传入数值 print(str) di = {"k1":"JD-YY","k2":"25"} str = "my name is {k1},age is {k2}".format(**di) #字典作为传入值时,在字典前面加两个 ** print(str) #打印结果 my name is JD-YY,age is 25 my name is limo,age is 24 网站名:丿小白不白丨,网址:https://home.cnblogs.com/u/JD-YY/ my name is JD-YY,age is 25
浙公网安备 33010602011771号