一、字符串的定义

字符串定义:在python中引号包起来的叫做字符串
(1)单引号、双引号:定义单行字符串
(2)三引号:多行字符串定义
(3)空字符串:s=’’
(4)空白字符:’ ’
注意点:字符串中有单引号时(外面用双引号注意区分)
“单引号”和“双引号”定义字符串 没有任何的区别
“三引号”定义字符串的时候,可以自由的换行
“单引号”和“双引号” 不能换行

s1 = 'abc'
s2 = "123"
s3 = """123"""
print(s1,type(s1))
print(s2,type(s2))
print(s3,type(s3))
s4= """
1
2
3
"""
print(s4,type(s4))
# 空字符
a1=""
# 空白字符
a2="  "

运行结果:
在这里插入图片描述
Python中任何的数据类型都可以转换为bool值
数据中有内容,转换为bool值之后为:True
数据中没有内容,转换为bool值之后为:False

二、字符串的转义

\可以对有特殊意义字符进行转义
1.字符串中如果有单引号怎么定义(Python’java)

s4 = 'Python\'java'
print(s4)
s5 = "Python'java"
print(s5)

运行结果:Python’java
Python’java
2.字符串中如果有单引号和双引号怎么定义(Python’java”)

s5 = """Python'java"php"""
print(s5)
s6 = "Python\'java\"php"
print(s6)

运行结果:Python’java"php
Python’java"php
3.转义字符:\’、 \”、 \n
\’:表示 ‘
\”:表示 “
\n:表示 换行符
\t:表示 水平制表符(用来对齐的,是一个TAB键的距离,没啥用,可以理解为已淘汰)

s7 = "python\njava"
print(s7)

运行结果:python
Java

s8 = "python1\t\tjava\tphp"
s9 = "python2\t\tjava44\tphp444"
s10 = "python3\t\tjava333\tphp"
print(s8)
print(s9)
print(s10)

运行结果:
python1 java php
python2 java44 php444
python3 java333 php

4.关闭字符串转义:r

# r:在字符串前面加个r
file_path = r"D:\PycharmProjects\playstudy_1\tidea"
print(file_path)

运行结果:D:\PycharmProjects\playstudy_1\tidea

三、字符串的下标索引取值和字符串的切片操作

"""
下标索引取值
字符串的下标,从0开始的(从前往后),从-1开始(从后往前),空格也算
"""

str1="hello python"
res1= str1[-4]
res2= str1[4]
print(res1)
print(res2)

运行结果:
t
0

# 字符串的切片操作
"""
[起始位置:终止位置] :取头不取尾,从起始位置开始,到终止位置的前一个
起始位置:不写,默认从头开始
终止位置:不写默认到结束
[起始位置:终止位置:步长]:步长默认为1,就是多少个取一个
"""
res3=str1[0:4]
print(res3)
res4=str1[:4]
print(res4)
res5=str1[0:]
print(res5)
str2="123456789"
print(str2[::3])

运行结果:
hell
hell
hello python
147

四、字符串的拼接和格式化

1、字符串拼接
方式1:直接使用 + 进行拼接(更灵活)

name = "我的名字叫逍遥"
age = "我今年18岁"
sex = "性别女"
user_info = name + ','+ age + ',' + sex + '。'
print(user_info)

运行结果:
我的名字叫逍遥,我今年18岁,性别女。
方式2:不推荐

name = input("请输入姓名:")
info = input("请输入费用类别:")
money = input("请输入金额:")
desc = "今天收到" + name + "同学,交来" + info + "费用,金额" + money + ",开此收据为凭证!"
print(desc)

运行结果:
请输入姓名:逍遥
请输入费用类别:学费
请输入金额:8888
今天收到逍遥同学,交来学费费用,金额8888,开此收据为凭证!
方式3:join方法(通用性比较好,更适合有规律的拼接)

"""
字符串x.join((字符1,字符2,....))
字符1 字符串x 字符串2 字符串x 字符串3 字符串x
"""

name = "我的名字叫逍遥"
age = "我今年18岁"
sex = "性别女"

res=','.join((name,age,sex))
print(res)

运行结果:我的名字叫逍遥,我今年18岁,性别女
2.字符串格式化输出

"""
format 格式化输出
有几个{},format中就可以传入几个数据,按位置一一对应
在{}中通过下标位置指定填充内容的数据(扩展,一般不用)
"""
# print("大家好,我的名字叫逍遥,今年18岁,性别女")
# 有几个{},format中就可以传入几个数据,按位置一一对应
s1="大家好,我的名字叫{},今年{}岁,性别{}"
# 在{}中通过下标位置指定填充内容的数据(扩展,一般不用)
s2="大家好,我的名字叫{0},今年{1}岁,性别{2}"
s3="大家好,我的名字叫{1},今年{2}岁,性别{0}"
s4="大家好,我的名字叫{0},今年{2}岁,性别{0}"
print(s1.format('逍遥',18,'女'))
print(s2.format('逍遥',18,'女'))
print(s3.format('逍遥',18,'女'))
print(s4.format('逍遥',18,'女'))

运行结果:
大家好,我的名字叫逍遥,今年18岁,性别女
大家好,我的名字叫逍遥,今年18岁,性别女
大家好,我的名字叫18,今年女岁,性别逍遥
大家好,我的名字叫逍遥,今年女岁,性别逍遥

五、字符串的常用方法

方法的调用格式:字符串。方法名()

1.find:查找元素位置

"""
find:查找元素位置
查找字符串片段在字符串中的下标位置,从前往后找,返回的是第一个被找到字符串片段起始位置
第一个参数:要查找的字符串片段
第二个参数:要查找的起始点
第三个参数:要找到终止位置-1
如果查找的字符串存在多个,查找结果是第一个出现的字符串下标
找不到就返回-1
"""
s1="python to xiaoyao"
res1=s1.find('ao',3,14)
res2=s1.find('ao',3,19)
res3=s1.find('ao',3,13)
print(res1)
print(res2)
print(res3)

运行结果:
12
12
-1

2.count:查找元素个数

"""
count:统计字符串片段,在字符串中出现的次数
找不到返回 0
"""
s1="python to xiaoyao"
res4=s1.count('ao')
res5=s1.count('b')
print(res4)
print(res5)

运行结果:
2
0

3.replacle:替换字符

"""
重要
replace:替换指定的字符串片段
参数1:要替换的字符串片段
参数2:替换之后的字符串片段
参数3:替换的次数,从前往后替换(默认替换所有的)

"""
s1="python to xiaoyao"
rest6=s1.replace('ao','AO',1)
print(rest6)

运行结果:
python to xiAOyao

4.split:字符串分割

"""
split:指定分割点对字符串进行分割
参数1:分割点
参数2:分割的次数(默认找到所有的分割点进行分割)
"""
s2="111ab222ab333ab444"
# 将字符串,用规定的字符“a”进行分割,得到一个列表
res7=s2.split("a")
res8=s2.split('a',2)
print(res7)
print(res8)

运行结果:
[‘111’, ‘b222’, ‘b333’, ‘b444’]
[‘111’, ‘b222’, ‘b333ab444’]

5.upper:将小写字母转为大写

s3="abc123ABC"
res9=s3.upper()
print(res9)

运行结果:ABC123ABC

6.lower:将大写字母转成小写

s3="abc123ABC"
res10=s3.lower()
print(res10)

运行结果:abc123abc
**

7.join方法(通用性比较好,更适合有规律的拼接)

**

"""
字符串x.join((字符1,字符2,....))
字符1 字符串x 字符串2 字符串x 字符串3 字符串x
"""

name = "我的名字叫逍遥"
age = "我今年18岁"
sex = "性别女"

res=','.join((name,age,sex))
print(res)

运行结果:我的名字叫逍遥,我今年18岁,性别女

字符串的格式化输出

8.format:格式化输出

在这里插入图片描述

"""
format 格式化输出
有几个{},format中就可以传入几个数据,按位置一一对应
在{}中通过下标位置指定填充内容的数据(扩展,一般不用)
"""
# print("大家好,我的名字叫逍遥,今年18岁,性别女")
# 有几个{},format中就可以传入几个数据,按位置一一对应
s1="大家好,我的名字叫{},今年{}岁,性别{}"
# 在{}中通过下标位置指定填充内容的数据(扩展,一般不用)
s2="大家好,我的名字叫{0},今年{1}岁,性别{2}"
s3="大家好,我的名字叫{1},今年{2}岁,性别{0}"
s4="大家好,我的名字叫{0},今年{2}岁,性别{0}"
print(s1.format('逍遥',18,'女'))
print(s2.format('逍遥',18,'女'))
print(s3.format('逍遥',18,'女'))
print(s4.format('逍遥',18,'女'))

运行结果:
大家好,我的名字叫逍遥,今年18岁,性别女
大家好,我的名字叫逍遥,今年18岁,性别女
大家好,我的名字叫18,今年女岁,性别逍遥
大家好,我的名字叫逍遥,今年女岁,性别逍遥

2)格式化小数长度(会四舍五入

price=float(input("请输入橘子价格:"))
print("今天的橘子是{}元一斤".format(price))
# 想保留2位小数
print("今天的橘子是{:.2f}元一斤".format(price))

运行结果:
请输入橘子价格:1.56666
今天的橘子是1.56666元一斤
今天的橘子是1.57元一斤
3)格式化百分比,并控制小数位

# 将小数按百分比的形式显示
print('百分比为{:.2%}'.format(0.23455))

运行结果:
百分比为23.46%

4.格式化字符串的长度

# 不足位数默认用空格填充
# 左对齐
print('{:<4}***'.format('abc'))
# 右对齐
print('{:>4}***'.format('abc'))
# 居中对齐
print('{:^8}***'.format('ab'))
# 不足位数指定内容填充
print('{:1<4}***'.format('abc'))
print('{:1>4}***'.format('abc'))
print('{:1^8}***'.format('ab'))

运行结果:
abc ***
abc***
ab ***
abc1***
1abc***
111ab111***

传统的格式化输出

"""
传统的格式化输出方法:%
%s :为字符占位,任意类型都可以
%d:为数值类型占位
%f:为浮点数占位

"""

s1="1%s---%s---%s"%('a','b','c')
print(s1)
s2="我的名字%s,年龄%d,性别%s"%('逍遥',18,'女')
print(s2)

运行结果:
1a—b---c
我的名字逍遥,年龄18,性别女

F表达式(F、f都一样,python3.6以上支持)

name='逍遥'
age=18
s3=F"我的名字{name},年龄{age}"
print(s3)

运行结果:
我的名字逍遥,年龄18
**

9.strip:去除字符串首尾的空格

**

# 将首尾的“空格”去除,默认去空格
str1 = '     python:666     '
print(str1.strip())
# 将首尾的“6”去除
str2 = '666python:666'
print(str2.strip('6'))
# 如果想把所有的空格都去除,通过替换方法“replace”将“空格”替换成“无”
str3 = '     python:666   java:8888    '
res = str3.replace(" ","")
print(res)

运行结果:
python:666
python:
python:666java:8888

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐