第四章 字符串

版权声明:版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_26489189/article/details/82459066

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%

猜你喜欢

转载自blog.csdn.net/qq_26489189/article/details/82459066