字符串
1.定义:
字符串是一个有序的,不可修改的,以引号(单引/双引号)包围的序列
单引号: ' '
双引号: “” “”
三单引号:' ' ‘(多用于代码注释)
三双引号: “ “ “(多用于代码注释)
单引号和双引号的区别?
都是为字符串的标准格式,只是为了区分英语中的一些语义
>>> print("I ' am 18")
I ' am 18
>>> print('I "am 18')
I "am 18
>>>
>>> print ('''
... 1
... 2
... 3
... ''')
1
2
3
>>> print("""
... 1
... 2
... 3
... """)
1
2
3
- 字符串拼接
>>> a = "jrljs"
>>> b = " is"
>>> c = " nice"
>>> d = a + b + c
>>> d
'jrljs is nice'
3.特殊字符
特殊字符就是在字符串当中起到特殊含义的字符
”\“ 转义符,将字符串当中的具有特殊含义的字符的特殊含义取消掉后继续执行;
"\n" 换行;
”\t“ 水平制表符,等同于tab键
”\“ 反斜杠符
占位符
在字符串当中以指定的格式符号进行占位,然后将指定的数据传入字符串
%s 字符串占位符
%d 数字占位符
%f 浮点占位符
%.2f 控制浮点型数字占位符
>>> print("My name is %s"%("jrljs"))
My name is jrljs
>>> print("My name is %s"%('jrljs'))
My name is jrljs
>>> print('My name is %s'%('jrljs'))
My name is jrljs
>>>
>>> print("I am %d years old"%(18))
I am 18 years old
>>>
>>> print("My height is %f m"%(1.70))
My height is 1.700000 m
>>>
>>> print("My height is %.2f m"%(1.70))
My height is 1.70 m
4.字符串的索引
字符串中的每一个个体都称作字符也是该字符串的一个元素,每一个元素都对应一个索引值(下标),可以使用len()方法查看一个序列的长度
比如字符串'jrljs',可以按照下图理解其下标概念,索引号从0开始
j | r | l | j | s |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
字符串截取:字符串[start:end]
截取原则:包头不包尾且截取方向是从左到右
>>> name = "jrljs"
>>> print(name[1:4])
rlj
步长截取:字符串[start:end:step] 按照step步长进行隔取;
截取原则:包头不包尾
默认步长:字符串[start:end:step] 这三个参数都有默认值,start,默认值为0;end,默认值字符串结尾元素;step,默认值为1
步长:默认值为1,那么它的取值范围应该是1-1=0,即全部都取出来;
步长为2,即2-1=1,即隔一个元素取一个;
依次类推...
若step>0,表示从左向右进行切片,此时start必须小于end才有结果。
若step<0,还是表示从左到右,只不过要反过来切片,此时start必须大于end才有结果。可以分两步理解,第一步先反取,即[::-1]; 第二步按照从左到右,根据步长依次取值
string = "hello world"
>>> print(string[0:7])
hello w
>>> print(string[:7])
hello w
>>>
>>> print(string[2:])
llo world
>>> print(string[:])
hello world
>>> print(string[::])
hello world
>>> print(string[::1])
hello world
>>> print(string[::2])
hlowrd
>>>
>>> print(string[::1])
hello world
>>> print(string[::-1])
dlrow olleh
>>> print(string[9:1:-1])
lrow oll
>>> print(string[9:1:-2])
lo l
>>> print(string[1:9:-2])
>>>
- 字符串查找
参数 | 描述 |
---|---|
count | 计数功能,返回自定义字符在字符串中的总个数 |
find | 查找,返回从左第一个指定字符的索引,找不到返回-1 |
rfind | 查找,返回从右第一个指定字符的索引,找不到返回-1 |
index | 查找,返回从左第一个指定字符的索引,找不到报错 |
rindex | 查找,返回从右第一个指定字符的索引,找不到报错 |
>>> print(string)
hello world
>>> print(string.count("l"))
3
>>> print(string.find("l"))
2
>>> print(string.rfind("l"))
9
>>> print(string.find("L"))
-1
>>> print(string.rfind("L"))
-1
>>> print(string)
hello world
>>> print(string.index("o"))
4
>>> print(string.rindex("o"))
7
>>> print(string.index("O"))
Traceback (most recent call last):
File "", line 1, in
ValueError: substring not found
>>> print(string.rindex("O"))
Traceback (most recent call last):
File "", line 1, in
ValueError: substring not found
6.字符串分割与替换
参数 | 描述 |
---|---|
partition | 把mystr以str进行分割,分割成三部分,str前,str自身和str后 |
rpartition | 类似于 partition()函数,不过是从右边开始. |
splitlines | 按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割 |
split | 判断字符串的分隔符切片 |
replace | 从左到右替换指定的元素,可以指定替换的个数,默认全部替换 |
>>> print(string)
hello world
>>> print(string.partition("o"))
('hell', 'o', ' world')
>>> print(string.rpartition("o"))
('hello w', 'o', 'rld')
>>>
>>>
>>> print(string)
hello world
>>> print(string.splitlines())
['hello world']
>>> print(string.split())
['hello', 'world']
>>> string2 = "hello\n world\n python\n"
>>> print(string2)
hello
world
python
>>> print(string2.splitlines())
['hello', ' world', ' python']
>>> print(string2.split())
['hello', 'world', 'python']
>>>
>>>
>>> print(string)
hello world
>>> print(string.replace('o','O'))
hellO wOrld
>>> print(string.replace('o','O',1))
hellO world
7.字符串修饰
参数 | 描述 |
---|---|
center | 让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充 |
ljust | 让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充 |
rjust | 让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充 |
zfill | 将字符串填充到指定的长度,不足地方用0从左开始补充 |
format | 按照顺序,将后面的参数传递给前面的大括号 |
strip | 默认去除两边的空格,去除内容可以指定 |
rstrip | 默认去除右边的空格,去除内容可以指定 |
lstrip | 默认去除左边的空格,去除内容可以指定 |
>>> print(string)
hello world
>>> print(string.center(15))
hello world
>>> print(string.center(15,'*'))
**hello world**
>>>
>>>
>>> print(string.ljust(15))
hello world
>>> print(string.ljust(15,'*'))
hello world****
>>> print(string.rjust(15,'*'))
****hello world
>>>
>>>
>>> print(string)
hello world
>>> print(string.zfill(15))
0000hello world
>>>
>>>
>>> string = ' hello world '
>>> print(string)
hello world
>>> print(string.strip())
hello world
>>> print(string.lstrip())
hello world
>>> print(string.rstrip())
hello world
>>>
>>>
>>> string = "{0} is {1}"
>>> print(string.format("jrljs","nice"))
jrljs is nice
8.字符串变形
参数 | 描述 |
---|---|
upper | 将字符串当中所有的字母转换为大写 |
lower | 将字符串当中所有的字母转换为小写 |
swapcase | 将字符串当中所有的字母大小写互换 |
title | 将字串符当中的单词首字母大写,单词以非字母划分 |
capitalize | 只有字符串的首字母大写 |
expandtabs | 把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8,可以试下8,12 |
>>> print('hello'.upper())
HELLO
>>>
>>> print('HELLO'.lower())
hello
>>>
>>> print('HH##ZZ'.swapcase())
hh##zz
>>> print('*qwe*'.swapcase())
*QWE*
>>>
>>> print('I \t is \t 18'.expandtabs())
I is 18
>>> print('I \t is \t 18'.expandtabs(10))
I is 18
>>> print('I \t is \t 18'.expandtabs(4))
I is 18
- 字符串判断
参数 | 描述 |
---|---|
isalnum | 判断字符串是否完全由字符或数字组成 |
isalpha | 判断字符串是否完全由字母组成 |
isdigit | 判断字符串是否完全由数字组成 |
isupper | 判断字符串当中的字母是否完全是大写 |
islower | 判断字符串当中的字母是否完全是小写 |
istitle | 判断字符串是否满足title格式 |
isspace | 判断字符串是否完全由空格组成 |
startswith | 判断字符串的开头字符,也可以截取判断 |
endswith | 判断字符串的结尾字符,也可以截取判断 |
>>> print('123456'.isalnum())
True
>>> print('12345ab'.isalnum())
True
>>> print('abcde'.isalnum())
True
>>>
>>> print('abcdef'.isalpha())
True
>>> print('abcdef#'.isalpha())
False
>>> print('abcdef3#'.isalpha())
False
>>>
>>> print("123456".isdigit())
True
>>> print("#####".isdigit())
False
>>> print("abcdef".isdigit())
False
>>>
>>> print('HELLO'.isupper())
True
>>> print('HELLOaabbcc'.isupper())
False
>>> print('aabbcc'.isupper())
False
>>>
>>> print('Wo Ow'.istitle())
True
>>> print('wO oW'.istitle())
False
>>>
>>> print(' '.isspace())
True
>>> print(' Welcome '.isspace())
False
>>>
>>> print('Welcome'.startswith('W'))
True
>>> print('Welcome'.startswith('Wel'))
True
>>> print('Welcome'.endswith('e'))
True
>>> print('Welcome'.endswith('come'))
True
>>>
10.字符串编码
encode 是编码
decode 是解码
>>> u = "陆"
>>> str1 = u.encode('gbk')
>>> print(str1)
b'\xc2\xbd'
>>> print(str2)
b'jrljs'
>>> str2 = u.encode('utf-8')
>>> print(str2)
b'\xe9\x99\x86'
>>>
>>> u1 = str1.decode('gbk')
>>> print(u1)
陆
>>> u2 = str2.decode('utf-8')
>>> print(u2)
陆
拓展
在python中解决编码问题
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行(python3默认为utf-8 所以没必要加文档头):
1、# -- coding: utf-8 --
2、#coding=utf-8
练习作业:
BMI指数(Body Mass Index) 以称身体质量指数
BMI值计算公式: BMI = 体重(公斤) / 身高的平方(米)
例如:
一个人69公斤,身高是173公分
BMI = 69 / 1.73**2 = 23.05
标准表:
BMI < 18.5 体重过轻
18.5 <= BMI < 24 体重正常
BMI > 24 体重过重
要求: 输入身高的体重,打印出BMI的值并打印体重状况
解答:
weight = int(input("请输入你的体重(kg):"))
hight = float(input("请输入你的身高(m):"))
BMI = weight/pow(high,2)
if BMI < 18.5:
print(“体重过轻”)
elif BMI > 18.5:
print("体重过重")
else
print("体重刚刚好")