Python3.5 笔记——第4章 字符串

Python3.5 笔记

第四章 字符串

基本操作

字符串是不可改变的。字符串的定义直接用引号就可以了,跟java一样。

str = "hello python"

字符串、列表、元组都是序列中的一种,所有标准序列操作对字符串同样适用。

不过字符串是不可变的,所以字符串做不了分片赋值。

print(str[0:5])
str[0:5] = "python" #字符串是不可变的
print(str)

输出

hello
Traceback (most recent call last):
  File "D:/pyspace/hellopython/Chapter4.py", line 3, in <module>
    str[0:5] = "python"
TypeError: 'str' object does not support item assignment

转义符

Python中的转义符也是通过\开头。比如:\n代表换行,'代表单引号等。

print("hello\nPython")#换行
print("\'")
print("\\")
print("\"")
print("\a")#打出来的不知道是什么玩意,书里叫响铃
hello
Python
'
\
"
�

除此之外还有以下转义符

转义字符 描述 转义字符 描述
\(在行尾时) 续行符 \n 换行
\\ 反斜杠符号 \v 纵向制表符
\' 单引号 \t 横向制表符
\" 双引号 \r 回车
\a 响铃 \f 换页
\b 退格 \oyy 八进制数,yy代表字符
\e 转义 \xyy 十六进制数,yy代表字符
\000 空格 \other 其他字符以普通格式输出

字符串格式化

字符串格式化符号

字符串格式化使用操作符号百分号(%)实现。%也可以用作模运算(求余)操作符。字符串格式化符号通俗的理解就是占位符,类似于sql中的?。格式如下:

%typeStrA%StrB

其中第一个%处是要插入的位置,StrA代表原字符串,第二个%右边的StrB代表要插入的字符串。

print("字符串格式化")
print("小明今年%s岁了"%"10")

输出

字符串格式化
小明今年10岁了

其他还有一些常用的格式化符号,参见下表格

符号 描述 符号 描述
%c 格式化字符及其ASCII码 %f 格式化浮点数字,可指定精度
%s 格式化字符串 %e 用科学计数法格式化浮点数
%d 格式化正数 %E 作用同%e,用科学计数法格式化浮点数

%f可指定精度值,在Python中,使用%f时,若不指定精度,则默认输出为6位小数,指定精度的格式为一个英文格式下的句点加上希望保留的小数位数,示例如下:

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

输出

圆周率PI的值为:3.140000
圆周率PI的值为:3.14

如果要输出%,有两种方式,第一种方式为直接使用加号加一个百分号

print("小明今年的成绩比去年提高了%.2f"%1.23 + "%")
小明今年的成绩比去年提高了1.23%

第二种方式格式化%,即用两个百分号输出,%%

print("小明今年的成绩比去年提高了%.2f%%"%1.23)
小明今年的成绩比去年提高了1.23%

字符串格式化元组

格式化操作符的右操作可以是任何元素。如果右操作数是元组,其中每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。在有多个占位符的字符串中,可以使用元组传入多个格式化值。如果需要转换的元组作为转换表达式的一部分存在,就必须将它用圆括号括起来,否则会出错。

print("今年是%d年世界杯,%s队夺得了冠军,最佳射手是%s,一共进了%d个球"%(2018,'法国',"卡恩",6))
print("今年是%d年世界杯,%s队夺得了冠军,最佳射手是%s,一共进了%d个球"%2018,'法国',"卡恩",6)
今年是2018年世界杯,法国队夺得了冠军,最佳射手是卡恩,一共进了6个球
Traceback (most recent call last):
  File "D:/pyspace/hellopython/Chapter4.py", line 22, in <module>
    print("今年是%d年世界杯,%s队夺得了冠军,最佳射手是%s,一共进了%d个球"%2018,'法国',"卡恩",6)
TypeError: not enough arguments for format string

宽度和精度

字符宽度是转换后的值所保留的最小字符个数,精度是数字转换后结果中应该包含的小数位数,或字符串转换后的值所能包含的最大字符个数。如果是*,则代表值从元组中获取。

print("圆周率PI的值为:%10f"%3.141593) #字符串的宽度是10,占位的字符串长度只有8,在字符串前面补2个空格
print("圆周率PI的值为:%10.2f"%3.141593) #字符串的宽度是10,占位的字符串长度只有4,在字符串前面补6个空格
print("圆周率PI的值为:%.2f"%3.141593) #保留2位小数
print("圆周率PI的值为:%.2f"%3.145593) #保留2位小数,会四舍五入
print("字符串精度获取%.5s" % "hello world") #字符串前5个字符
print("字符串精度获取%*.*s" % (10,5,"hello world")) #*代表值从元组中获取,输出长度是10精度是5的字符串
print("圆周率PI的值为:%+.2f"%-3.141593) #数字对齐,无论正负都输出符号
print("圆周率PI的值为:%+.2f"%3.141593) #数字对齐,无论正负都输出符号

输出:

圆周率PI的值为:  3.141593
圆周率PI的值为:      3.14
圆周率PI的值为:3.14
圆周率PI的值为:3.15
字符串精度获取hello
字符串精度获取     hello
圆周率PI的值为:-3.14
圆周率PI的值为:+3.14

字符串方法

find()

find()方法用于返回要查找的字符串在被检测的字符串中的索引位置,如果存在的话,则返回结果为字符串所在位置的最左端索引,如果不存在的话则返回-1。find()方法还可以指定被检测字符串的开始和结束位置。默认是从0到结尾。语法格式如下:

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

实例:

field = "do it now"
print(field.find("no"))
print(field.find("it",0,5))
print(field.find("it",0,4))
print(field.find("python"))

输出:

6
3
-1
-1
join()

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

语法格式如下:

str.join(sequence)

str是指定的连接字符串,sequence指定检索的字符串序列。返回结果是重新连接后生成的新的字符串。

实例:

field = "","home","data","hdfs"
print("/".join(field))
field = "","just","do","it"
print("/".join(field))

输出:

/home/data/hdfs
/just/do/it
lower()

lower()方法用于将字符串中的所有大写字符转换成小写。如果已经是小写,则仍保持原状。语法如下:

str.lower()

实例:

field = "JUST,DO,IT"
print(field.lower())

输出:

just,do,it
upper()

upper()方法用于将字符串中的所有小写字符转换成大写。如果已经是大写,则仍保持原状。语法如下:

str.upper()

实例:

field = "just,do,it"
print(field.upper())
print(field.upper().find("IT"))

输出:

JUST,DO,IT
8
swapcase()

swapcase()方法用于对字符串的大小写进行转换,将字符串中大写转换为小写,小写转换为大写。语法格式如下:

str.swapcase()

实例:

field = "Just,Do,It"
print(field.swapcase())

输出:

jUST,dO,iT
replace()方法

replace()方法把字符串中的old字符串,替换成new字符串,并且可以指定一共替换的最大次数。语法格式如下:

str.replace(old,new,max)

实例:

field = "just do it"
print(field.replace("it","it,do it now"))
print(field.replace("t","T",1))

输出:

just do it,do it now
jusT do it
split()方法

split()方法用于按照指定的分隔符,将字符串进行分割,并返回分割后的列表。默认的分隔符为空格,同时可以指定最大分割次数。语法格式如下:

str.split("分隔符",最大分割次数)

实例:

field = "just do it"
print(field.split())#返回分割后的列表,默认分隔符是空格
field = "just|do|it"
print(field.split("|"))
print(field.split("|",1))#指定最大分割字数

输出:

['just', 'do', 'it']
['just', 'do', 'it']
['just', 'do|it']
strip()

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

str.strip('指定的字符')

实例:

field = " just do it "
print(field.strip())
field = "-just do it-"
print(field.strip("-"))

输出:

just do it
just do it
translate()

translate()方法根据参数table表转换字符串的字符,将要过滤的字符放到del参数中。语法格式如下:

str.translate(table)

实例:

field = " just do it "
intab = "abcde"
outtab = "12345"
transtab = field.maketrans(intab,outtab)
print(field.translate(transtab))

输出:

 just 4o it 

习题

#习题:小智的智商去年是100,今年是132.问:今年比去年提高了多少。
#要求:用字符串格式化显示输出"xx.x%"的形式,保留一位小数
print("--------------习题----------------")
print("小智的智商比去年提高了%.1f%%"%((132-100)/100*100))

输出:

小智的智商比去年提高了32.0%
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容