一、Python的字符串简介
Python中的字符串是一种计算机程序中常用的数据类型【可将字符串看作是一个由字母、数字、符号组成的序列容器】,字符串可以用来表示文本数据。
通常使用一对英文的单引号(')或者双引号(")包含起来;其中Python还支持使用一对三引号来表示多行字符串;如下图所示:
# 方式1
str1= "你好 牛奶咖啡!"
print(str1)
# 方式2
str2 = '你好 测试字符串!'
print(str2)
# 方式3
str3 = """这是一个Python课程
讲解的字符串类型
可以多行表示
"""
print(str3)
str4 = '''
1. 购买道具
2. 攻击
3. 逃跑
4. 退出
'''
print(str4)
二、Python字符串的操作
2.1、Python转义符
序号 | Python转义符 | 说明 |
1 | \' | 表示单引号【'】 |
2 | \" | 表示双引号【"】 |
3 | \\ | 表示反斜杠【\】 |
4 | \n | 表示换行 |
5 | \t | 表示水平制表符【代表着四个空格,也就是一个tab,它的主要作用是对齐表格数据的各列,使得输出更易于阅读和理解】 |
6 | \r | 表示将光标的位置回退到本行的开头位置 |
# 转义符 \
# 1、将某些普通符号给于特殊的功能
# 2、将一些特殊功能的符号普通化
import time
# \":表示双引号【"】
str1 = "He's my teacher!\"测试\""
print(str1)
# \':表示单引号【'】
str2 = 'He\'s my teacher!'
print(str2)
# \\表示反斜杠【\】
str3 = "F:\\LearnProjects\\Python\\getRandom.py"
print(str3)
# \n:表示换行
str4 = "\nI am CoffeeMilk\nmy age is 26\n"
print(str4)
# \t:表示水平制表符【代表着四个空格,也就是一个tab,它的主要作用是对齐表格数据的各列,使得输出更易于阅读和理解】
str5 = "序号\t姓名\t年龄\t性别"
print(str5)
str6 = '''132\t张三\t\t23\t男
133\t杨新宇\t24\t男
134\t魏思思\t23\t女
'''
print(str6)
# \r 表示将光标的位置回退到本行的开头位置
str7 = "\r字符串\r测试回车符"
print(str7)
# \r实现一个进度效果
for i in range(1,11):
str71 = '\r' + '#' * i+f'{i*10}%'
time.sleep(0.26)
print(str71, sep="", end="")
print("\n打印结束")
# \r实现删除效果
str72 = "等闲识得东风面,万紫千红总是春。"
strLen = len(str72)
for i in range(strLen):
print("\r" + str72[:strLen-1-i] + "|", end="")
time.sleep(0.36)
# \r实现本地时间实时显示
while True:
curTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time.sleep(0.1)
print(f"\r当前时间为:{curTime}", end="")
2.2、Python字符串格式化和输入输出
序号 | Python字符串格式化和输入输出 | 说明 |
1 | 字符串格式化【占位符】 (%占位符 、str.format()) |
|
2 | 字符串格式化【f-string变量插入】 | 是Python3.6新引入的一种字符串格式化方法;主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx' ),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式: |
3 | 字符串输入【input】 | 使用input() 函数来获取输入内容 |
4 | 字符串输出【print】 | 使用print() 函数来展示输出内容 |
name = "牛奶咖啡"
age = 26
height = 180
# 方法1:%占位符
print("我的名字是%s,年龄%d,身高是%dcm" % (name, age, height))
# 方法2:str.format()
print("我的名字是{},年龄{},身高是{}cm".format(name, age, height))
# 方法3:f-string
print(f"我的名字是{name},年龄{age},身高是{height}cm")
运行结果如下:
# 使用input()函数来获取输入内容
name=input("请输入你的名字:")
print(name)
age=input("请输入你的年龄:")
print(age)
print(f"姓名:{name} 年龄:{age}")
# 输入的内容转为数字 int(需转换的值)
num1 = input("请输入数字1:")
num2 = input("请输入数字2:")
result=num1+num2
print(f"{num1}类型是{type(num1)} {num2}类型是{type(num2)} {num1}+{num2}={result}")
num1_Int = int(num1)
num2_Int = int(num2)
result2 = num1_Int + num2_Int
print(f"{num1_Int}类型是{type(num1_Int)} {num2_Int}类型是{type(num2_Int)} {num1_Int}+{num2_Int}={result2}")
# 输出的时候可以指定内容分割符号
x = 1000
print(100, "你好", x)
print(100, "你好", x, sep="_")
# 输出的时候可以指定是否换行(不换行)
print(100, "你好", x, end="\t")
print(100, "你好", x, end="\t")
print(100, "你好", x, end="\t")
运行结果如下:
2.3、Python字符串序列操作
字符串属于序列类型(序列是指:一块可以存放多个值的连续内存空间,且这些值按照一定顺序排列,可以通过每个值所在的位置编号访问)。
序号 | Python字符串的序列操作名称 | 说明 |
1 | 索引 | |
2 | 切片 | |
3 | 长度(len()) | |
4 | 判断(in) | |
5 | 拼接(+、*) |
str = "你好,欢迎来到Pyhton世界"
# 1、索引操作:字符串[索引],查询字符
print(str[1])
print(str[-1])
print(str[6]+"\n")
# 2、切片操作:字符串[开始索引:结束索引] 顾头不顾尾
print(str[3:4])
print(str[3:5])
print(str[3:-1])
print(str[3:])
print(str[:3])
print("获取所有字符串内容:", str[:])
print("负索引切片:", str[-8:])
print("从左向右切:", str[0::1])
print("从左向右切:", str[4:16:2])
print("从右向左切(翻转):", str[9::-1])
print("从右向左切(完全翻转):", str[::-1], "\n")
# 3、字符串拼接
name = "咖啡"
age = "26"
result = "我的名字是:"+name+" 我的年龄是:"+age
print(result)
result2 = f"我的名字是:{name} 我的年龄是:{age}\n"
print(result2)
# 4、字符串的乘法
print("***")
print("*"*10)
print("欢迎"*3, "\n")
# 5、字符串的长度
str12 = "Hello world"
print(f"【{str12}】字符串的长度是:{len(str12)}")
str13 = "你好,中国!"
print(f"【{str13}】字符串的长度是:{len(str13)}\n")
# 6、针对容器类型:in 判断,判断某个内容是否存在
str14 = "你好,世界"
print(f"【世】属于【{str14}】", "世" in str14)
print(f"【你好】属于【{str14}】", "你好" in str14)
print(f"【测试】属于【{str14}】", "测试" in str14)
运行结果如下:
三、Python字符串的内置方法
序号 | Python字符串的内置方法名称 | 内置方法说明 | 示例 | 结果 |
1 | upper() | 全部大写 | "Hello World".upper() | "HELLO WORLD" |
2 | lower() | 全部小写 | "Hello World".lower() | "hello world" |
3 | startswith() | 是否以指定内容开头 | "张三".startswith("张") | True |
4 | endswith() | 是否以指定内容结尾 | "a.mp3".endswith(".jpg") | False |
5 | isdigit() | 是否是数字字符串 | "36".isdigit() | True |
6 | strip() | 去除字符串首尾的空格或换行符号 | " hi,Milk \n".strip() | "hi,Milk" |
7 | join() | 将多个字符串连接在一起 | ";".join(['哈尔滨', '深圳', '内蒙古']) | "哈尔滨;深圳;内蒙古" |
8 | split() | 将字符串按照某个字符分割;默认按照空格分割 | "哈尔滨-深圳-内蒙古".split("-") | ['哈尔滨', '深圳', '内蒙古'] |
9 | find() | 搜索指定字符串存在在返回搜索内容所在位置的开始索引,没有找到则返回-1 | "你好,张三中国欢迎你!".find("张三") | 3 |
10 | index() | 搜索指定字符串存在在返回搜索内容所在位置的开始索引,没有找到则直接报错 | "你好,张三中国欢迎你!".index("张三") | 3 |
11 | count() | 统计指定字符串出现的次数 | "张三 李四 王五 赵六 张三".count("张三") | 2 |
12 | replace() | 将需要替换的内容替换为新的内容 | "I am coffeemilk".replace("coffee", "tea") | "I am teamilk" |
# 数据类型的内置方法:数据类型对象.方法名(参数)
# 1、字符串全部转为大写或小写方法
str1 = "Hello World"
str1_upper = str1.upper()
print(f"{str1} 全部转为大写是:{str1_upper}")
print(f"{str1} 全部转为小写是:{str1.lower()}\n")
# 2、startswith_表示字符串是否以什么开头 endwith_表示字符串是否以什么结尾 方法
str2 = "apple banana peach orange"
startStyle = "apple"
startStyle2 = "ap"
startStyle3 = "bana"
print(f"【{str2}】字符串是否以【{startStyle}】开头:{str2.startswith(startStyle)}")
print(f"【{str2}】字符串是否以【{startStyle2}】开头:{str2.startswith(startStyle2)}")
print(f"【{str2}】字符串是否以【{startStyle3}】开头:{str2.startswith(startStyle3)}\n")
str21 = "张三"
startStyle22 = "张"
startStyle23 = "杨"
print(f"【{str21}】字符串是否以【{startStyle22}】开头:{str21.startswith(startStyle22)}")
print(f"【{str21}】字符串是否以【{startStyle23}】开头:{str21.startswith(startStyle23)}\n")
url1 = "http://www.baidu.com/test/image/a.jpg"
endStyle = ".jpg"
endStyle2 = ".mp3"
print(f"【{url1}】地址内容是否以{endStyle}格式结尾:{url1.endswith(endStyle)}")
print(f"【{url1}】地址内容是否以{endStyle2}格式结尾:{url1.endswith(endStyle2)}")
运行结果如下:
# 1、isdigit:判断输入的内容是否是数字字符串
str = input("请输入数字:")
if str.isdigit():
print(f"{str} 是数字")
num = int(str)*2
print(f"{str}的2倍是:{num}")
else:
print(f"当前输入的{str}不是数字,请检查后重试")
# 2、strip:去除字符串首尾的空格或换行符
user = input("请输入用户名:")
print(f"【{user}】字符串的长度是:{len(user)}")
user = user.strip()
print(f"剔除【{user}】字符串前后的空格或换行符后的长度是:{len(user)}")
运行结果如下:
# 1、split:字符串分割
citys = "北京 上海 广州 重庆 哈尔滨 深圳 内蒙古"
result = citys.split(" ")
print(f"【{citys}】字符串共包含的城市为:{result}\n")
# 2、join:拼接内容
result2 = ";".join(result)
print(f"【{result}】内容拼接后的结果是:{result2}\n")
# 3、find:查找内容存在字符串的开始索引(没有找到返回-1)
str = "你好,张三中国欢迎你!"
needFindStr = "张三"
result_find = str.find(needFindStr)
print(f"【{str}】字符串中查找【{needFindStr}】结果是:{result_find}")
needFindStr2 = "李四"
print(f"【{str}】字符串中查找【{needFindStr2}】结果是:{str.find(needFindStr2)}")
# 4、index:查找内容是否存在(存在则返回对应的开始索引位置,查找不到则直接报错)
reslult_index = str.index(needFindStr)
print(f"【{str}】字符串中查找【{needFindStr}】结果是:{reslult_index}\n")
# print(f"【{str}】字符串中查找【{needFindStr2}】结果是:{str.index(needFindStr2)}")
# 5、count:计数
names="张三 李四 王五 李四 赵六 张三"
find_str="张三"
print(f"【{names} 】字符串中的【{find_str}】共出现了【{names.count(find_str)}】次")
# 6、replace:替换
info = "I am coffeemilk"
old = "coffee"
new = "tea"
result_info = info.replace("coffee","tea")
# info = info.replace("coffee","tea")
print(info)
print(f"【{info}】字符串替换【{old}】为【{new}】后是:{result_info}")
# print(f"【{info}】替换【{old}】为【{new}】后是:{info}")
运行结果如下: