Python3.5从0开始学读书笔记——第四章 字符串

基本操作

字符串是不可改变的。字符串的定义直接用引号就可以了,跟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%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值