吾,小白尔,所见所闻,冰山一角矣,,

---------------------------------------------------------分割线-----------------------------------------------------

字符串的方法有很多,常用的要牢记。

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

 

posted on 2018-11-11 18:08  丿小白不白丨  阅读(87)  评论(0)    收藏  举报