码迷,mamicode.com
首页 > 编程语言 > 详细

python3.5修炼手册9

时间:2017-08-27 10:03:28      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:duyuheng   字符串的基本操作   字符串格式化   字符串方法   

字符串

可以使用使用(‘‘或"")创建字符串。

创建字符串很简单,只要为变量分配一个值即可。

例如:

field=‘Hello‘

注意:字符串是不可变的,所以字符串做不到分片赋值

可以在输出语句中输出两行

print(‘天王盖地虎\n小鸡炖蘑菇‘)

C:\python\python.exe C:/python.py/yuanzu.py

天王盖地虎

小鸡炖蘑菇


python中的转义字符

转义字符          描述          

\(在行尾时)       持续行            

\\              反斜杠符号     

\‘              单引号        

\"              双引号       

\a              响铃         

\b              退格(Backspace) 行

\e              转义                      

\000             空             

\n              换行

\v              纵向制表符

\t              横向制表符

\r              回车

\f              换页

\oyy            八进制数,yy代表的字符,如\o12代表换行

\xyy            十六进制数,yy代表的字符,如\x0代表换行

\other           其他字符以普通格式输出

     

字符串格式化

字符串格式化符

字符串格式是使用操作符百分号(%)实现的。

%也可以用作模运(求余)操作符。

例如:

print(‘hello,%s‘%‘world‘)

C:\python\python.exe C:/python.py/zifuchuan.py

hello,world

%左边放了一个待格式化的字符串,右边放置的是希望格式化的值。格式化的值可以是一个字符串或数字。

在例如:

print(‘徐伟今年几%s岁了‘%18)

C:\python\python.exe C:/python.py/zifuchuan.py

徐伟今年几18岁了

格式化字符串的%s部分称为转换说明符,标记了需要放置转换值的位置,通用术语为占用符。

上例s表示百分号右边的值会被格式化为字符串,s指的是str。如果不是字符串就会使用str将其转换为字符串。


字符串格式化符

符号        描述                 符号        描述

%c    格式化符及其ASCII码            %f      格式化浮点数字,可指定精度值

%s    格式化字符串                 %e      用科学计数法格式化浮点数

%d    格式化整数                  %E      作用同%e,用科学计数法格式化浮点数

%u    格式化无符号整形              %g      %e和%f的简写

%o    格式化无符号八进制数           %G      %f和%E的简写 

%x    格式化无符号十六进制数          %p      用十六进制数格式化变量的地址

%X    格式化无符号十六进制数 (大写)


示例:使用%d格式化整数

print(‘徐伟今年几%d岁了‘%18.9)

C:\python\python.exe C:/python.py/zifuchuan.py

徐伟今年几18岁了

示例:使用%f格式化浮点数,可指定精确值

print(‘圆周率PI的值为:%f‘%3.14)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:3.140000

注意:使用%f的时候,如果不指定精度则默认

如果要精确到两位小数点,就要进行指定了

print(‘圆周率PI的值为:%.2f‘%3.14)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:3.14

指定精度的格式为一个句点加上希望保留的小数位,如上例中的%.2f就是保留2位小数

解决一个实际问题,输出类似于1.23%这样的数(也就是百分比)

举个小例子:公司今年的市值同比去年上升了1.23%\

print(‘公司今年的市值同比去年上升了:%.2f%%‘%1.23)

C:\python\python.exe C:/python.py/zifuchuan.py

公司今年的市值同比去年上升了:1.23%

字符中的百分号是转换说明符,如果想要输出%(百分比),就需要格式化字符%,从而就需要使用%%。

例如:

print(‘输出百分号:%s‘%‘%‘)

C:\python\python.exe C:/python.py/zifuchuan.py

输出百分号:%


字符串格式化元组

格式化操作符的右键操作数可以是元素。

如果操作数是元组,其中每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。

例如:

print(‘今天是%s月%s号,我们晚上出去吃%s,一共花了%d元‘%(‘8‘,‘24‘,‘烤鱼‘,123))

C:\python\python.exe C:/python.py/zifuchuan.py

今天是8月24号,我们晚上出去吃烤鱼,一共花了123元

在有多个占位符的字符串中,可以使用元组传入多个格式化值。

注意:如果需要转换元组作为转换表达式的一部分存在,就必须将它使用圆括号括起来,否则就会出错。

使用列表或其他序列代表元组,序列就会被解释为一个值。只有元组和字典可以格式化一个以上的值。


基本转换说明符(这些项的顺序是非常重要的)

%字符:标记转换说明符开始。

转换标志(可选):-表示对对齐;+表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值位数不够是用填充。

最小字段的宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,宽度就会从元组中读出。

点(.)后面跟精度值(可选):如果后面是实数,精度值表示出现在小数点后的位数;如果转换的是字符串,该数字就表示最大字段的宽度;如果是*,精度就会从元组中转换出来。


简单转换

例如:

print(‘今天逛商场花了多少钱:%.2f‘%12345.1537)

C:\python\python.exe C:/python.py/zifuchuan.py

今天逛商场花了多少钱:12345.15

print(‘买了一个苹果7PLUS花了$%d元.‘%7888)

C:\python\python.exe C:/python.py/zifuchuan.py

买了一个苹果7PLUS花了$7888元.


字段宽度和精度

转换说名符包括字段宽度和精度。字段宽度是转换后的值所有保留的最小字符个数,精度是数字转换后结果中应该包含的小数位数或字符串转换后的值所能包含的最大字符的个数。

例如:

#字段宽度为10

print(‘圆周率PI的值为:%10f‘%3.141593)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:  3.141593

字符串宽度为10,被字符串占据8个空格,还剩2个

#字段宽度为10

print(‘圆周率PI的值为:%10.2f‘%3.141593)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:      3.1

字符串宽度为10,被字符串占据4个空格,还剩6个

#打印出前字符串前5个

print(‘字符串精度获取:%.5s‘%(‘du yu heng‘))

C:\python\python.exe C:/python.py/zifuchuan.py

字符串精度获取:du yu

字段宽度和精度都是整数,并通过点号(.)分隔。两个都是可选参数,如果给出精度,就必须包涵点号。

可以使用*作为字段宽度或精度(两者都可以用*),数值会从元组中读出。

例如:

print(‘从元组中获取字符串精度:%*.*s‘%(10,5,‘hello world‘))

C:\python\python.exe C:/python.py/zifuchuan.py

从元组中获取字符串精度:     hello

print(‘从元组中获取字符串精度为5:%.*s‘%(5,‘hello world‘))

C:\python\python.exe C:/python.py/zifuchuan.py

从元组中获取字符串精度为5:hello

可以使用*作为字段宽度或精度(两者都可以使用),数值会从元组中读出。


符号、对齐和0填充

在字段宽度和精度之前可以放置一个"标表"零表示用零进行填充。

例如:

print(‘圆周率PI的值为:%010.2f‘%3.141593)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:0000003.14

使用减号用来对齐数值

例如:

print(‘圆周率PI的值为:%-10.2f‘%3.141593)

C:\python\python.exe C:/python.py/zifuchuan.py

圆周率PI的值为:3.14     #后面有6个空格可以使用光标检测

使用减号时,数字右侧多出了额外的空格

空白("")表示在正数前面,加上空格

例如:

print(("%5d"%10)+‘\n‘+("%5d"%-10))

C:\python\python.exe C:/python.py/zifuchuan.py

  10

 -10

上例操作也可以用于对齐正负数

加号表示无论是正数还是负数都表示出符号

例如:

print((‘宽度前面加加号:%+5d‘%10)+‘\n‘+(‘宽度前面加减号:%+5d‘%-10))

C:\python\python.exe C:/python.py/zifuchuan.py

宽度前面加加号:  +10

宽度前面加减号:  -10

上例操作也可以用于数值对齐。


字符串方法


find()方法

find()方法用于检测字符串中是否包涵子字符串str。如果指定beg(开始)和end(结束)范围,就检查是否包含在指定范围内。如果包含子字符串,就返回索引值;否则返回-1。

find()方法的语法如下:

          str.find(str,beg=0,end=len(string))

          str代表指定检测的字符串,beg代表开始索引,默认为0;end代表结束索引,默认为该字符串的长度。 返回结果为子串所在位置的最左端索引,如果没有找到,就返回-1.


find()方法演示:

field=‘do it now‘
print(field.find(‘do‘))
print(field.find(‘now‘))
print(field.find(‘python‘))

C:\python\python.exe C:/python.py/zifuchuan.py

0

6

-1

注意:字符串的find方法返回的不是布尔值。如果返回0,就表示在索引0处找到了子字符串。

find方法还可以接受参数,用于表示起始点和结束点

例如:

field=‘do it now‘
print(‘提供起点2输出索引位置为:‘,field.find(‘it‘,2))
print(‘提供起点5输出索引位置为:‘,field.find(‘it‘,5))
print(‘提供起点0和终点3输出索引位置为:‘,field.find(‘it‘,0,3))
print(‘提供起点0和终点5输出索引位置为:‘,field.find(‘it‘,0,5))
print(‘提供起点5和终点10输出索引位置为:‘,field.find(‘it‘,5,10))

C:\python\python.exe C:/python.py/zifuchuan.py

提供起点2输出索引位置为: 3

提供起点5输出索引位置为: -1

提供起点0和终点3输出索引位置为: -1

提供起点0和终点5输出索引位置为: 3

提供起点5和终点10输出索引位置为: -1

通过使用起始值和终止值查找指定的范围内是否存在指定字符串。


join()方法

join()方法用于将序列中的元素一指定的字符连接成一个新的字符串。

join()方法的语法如下:

         str.join(sequence)

         str代表指定检索的字符串,sequence代表要连接的元素序列,返回结果为指定字符连接序列中元素后生成的新字符串。

join()方法演示:

field=[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
print(‘用+连接字符串列表:‘,‘+‘.join(field))

C:\python\python.exe C:/python.py/zifuchuan.py

用+连接字符串列表: 1+2+3+4+5

连接元组

dirs= (‘home‘,‘data‘,‘tmp‘)
print(‘路径:‘,‘/‘.join(dirs))

C:\python\python.exe C:/python.py/zifuchuan.py

路径: home/data/tmp

注意:进行join操作调用和被调用的对象必须都是字符串,任意一个不是字符串的都会报错。


lower()方法

lower()方法用于将字符串中所有大写转换为小写。

lower()方法的语法如下:

           str.lower()

     str代表指定检索的字符串,不需要参数。返回结果为字符串中所有大写字符串转换为小写字符串。

lower()方法演示:

name=‘DUYUHENG‘
print(‘调用lower得到字符串:‘,name.lower())

C:\python\python.exe C:/python.py/zifuchuan.py

调用lower得到字符串: duyuheng

如果想要找在一个字符串中查找某个子字符并忽略大小写,也可以使用lower()方法

例如:

name=‘DUYUHENG‘
print(name.lower().find(‘Yu‘.lower()))

C:\python\python.exe C:/python.py/zifuchuan.py

2

注意:对于英文字符串,lower()方法在处理时一点问题都没有,对于非英文处理效果就一般了


upper()方法

upper()方法用于将字符串中所有小写转换为大写。

upper()方法语法如下:

          str.upper()

          str代表指定检索的字符串,不需要参数。返回结果为小写字母字符串转换为大写字母字符串。

upper()方法演示:

name=‘duyuheng‘
print(‘调用upper得到字符串:‘,name.upper())

C:\python\python.exe C:/python.py/zifuchuan.py

调用upper得到字符串: DUYUHENG

如果想要找在一个字符串中查找某个子字符并忽略大小写,也可以使用upper()方法

例如:

name=‘duyuheng‘
print(name.upper().find(‘Yu‘.upper()))

C:\python\python.exe C:/python.py/zifuchuan.py

2


swapcase()方法

swapcase()方法用于对字符串的大小写字母进行转换,将字符串中大写转换为小写、小写转换为大写

swapcase()方法语法如下:

           str.swapcase()

           str代表指定检索的字符串,不需要参数。返回结果为大小写字母转换后生成的新字符串。

swapcase()方法演示:

name=‘du YU heng‘
print(‘原字符串:‘,name)
print(‘调用swapcase方法后得到的字符串:‘,name.swapcase())

C:\python\python.exe C:/python.py/zifuchuan.py

原字符串: du YU heng

调用swapcase方法后得到的字符串: DU yu HENG


replace()方法

replace()方法把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,替换次数就max次.

replace()方法语法如下:

           str.replace(old,new[,max])

           str代表指定检索的字符串;old代表将被替换的子字符串;new代表新字符串,用于替换old子字符串;max代表可选字符串,代替次数不超过max次。返回结果为字符串中的old(旧字符串)替换成new(新字符串)后生成的新字符串,如果指定3个参数max,替换次数就不超过max次。

replace()方法演示:

field =‘do it now,do right now‘
print(‘原有字符串:‘,field)
print(‘新字符串:‘,field.replace(‘do‘,‘Just do‘))
print(‘新字符串:‘,field.replace(‘o‘,‘Just‘,1))
print(‘新字符串:‘,field.replace(‘o‘,‘Just‘,2))
print(‘新字符串:‘,field.replace(‘o‘,‘Just‘,3))

C:\python\python.exe C:/python.py/zifuchuan.py

原有字符串: do it now,do right now

新字符串: Just do it now,Just do right now

新字符串: dJust it now,do right now

新字符串: dJust it nJustw,do right now

新字符串: dJust it nJustw,dJust right now

当不指定第3个参数时,所有匹配字符都替换;指定第三个字符时,替换从左往右进行,替换次数不超过指定次数。


split()方法

split()方法 通过指定分隔符对字符串进行切片,如果参数num有指定值,就只分隔num个子字符。是join的逆方法,用来将字符串分

split()方法语法如下:

         str.split(st="",num=string.count(str))

         str代表指定检索的字符串;st代表分隔符,默认为空格;num代表分割次数。返回结果为分割后的字符串列表。

split()方法演示:

field = ‘do it now‘
print(‘不提供任何分割符后分隔的字符串:‘,field.split())
print(‘根据i分隔后的字符串:‘,field.split(‘i‘))
print(‘根据o分隔后的字符串:‘,field.split(‘o‘))
print(‘根据o分隔1次后的字符串:‘,field.split(‘o‘,1))

C:\python\python.exe C:/python.py/zifuchuan.py

不提供任何分割符后分隔的字符串: [‘do‘, ‘it‘, ‘now‘]

根据i分隔后的字符串: [‘do ‘, ‘t now‘]

根据o分隔后的字符串: [‘d‘, ‘ it n‘, ‘w‘]

根据o分隔1次后的字符串: [‘d‘, ‘ it now‘]

如果不提供分隔符,程序会把所有的空格作为分割符。

操作过程中可以指定分隔符和分割的次数,若不指定分割次数,则从左往右检索和分隔匹配的字符,分割次数不超过指定次数;

若不指定分割次数,则所有匹配的字符串都会被分割。


strip()方法

strip()方法方法用于移除字符串头尾指定的字符(默认为空格)。

strip()方法的语法如下:

           str.strip([chars])

            str代表指定检索的字符串;chars代表的移除字符串头尾指定的字符,返回结果为移除字符串头尾指定的字符生成的新字符串。

strip()方法演示:

name = ‘----du yu heng----‘
print(‘原字符串:‘,name)
print(‘新字符串:‘,name.strip(‘-‘))
st = ‘----du--yu--heng----‘
print(‘原字符串:‘,st)
print(‘新字符串:‘,st.strip(‘-‘))

C:\python\python.exe C:/python.py/zifuchuan.py

原字符串: ----du yu heng----

新字符串: du yu heng

原字符串: ----du--yu--heng----

新字符串: du--yu--heng

从上例可以看出strip()方法指去除头尾匹配的字符,中间匹配的字符不会去除。


translate()方法

translate()方法根据参数table给出的表(包含256个字符)转换字符串的字符,将要过滤掉的字符放的del参数中。

translate()方法语法如下:

            str.translate(table[,deletechars])                                    str代表指定检索的字符串;table代表翻译表,翻译表通过maketrans方法转换而来;deletechars代表字符串中要过滤的字符列表。返回结果为翻译后的字符串。

 

translate()方法演示(这个比较难懂);

intab = ‘adfas‘
outtab = ‘12345‘
trantab = str.maketrans(intab,outtab)
st = ‘just do it‘
print(‘st调用translate方法后:‘,st.translate(trantab))

C:\python\python.exe C:/python.py/zifuchuan.py

st调用translate方法后: ju5t 2o it

注意:前两个maketrans参数必须具有相同的长度也就是(initab和outtab值的长度必须一样)

translate()方法和replace()方法可以替换字符串中某些部分。

replace()方法只处理单个字符。

translate()方法的优势在于可以同时进行多个替换,有时比replace()方法效率高的多。


本文出自 “duyuheng” 博客,谢绝转载!

python3.5修炼手册9

标签:duyuheng   字符串的基本操作   字符串格式化   字符串方法   

原文地址:http://duyuheng.blog.51cto.com/12879147/1959630

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!