基本操作
字符串是不可改变的。字符串的定义直接用引号就可以了,跟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%