当前位置: 首页 > news >正文

Python基础——字符串

一、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转义符
序号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字符串的格式化和输入输出
序号Python字符串格式化和输入输出说明
1

字符串格式化【占位符】

(%占位符 、str.format())

  • %s:字符串类型

  • %d:十进制整数类型

  • %f:浮点数类型

  • %x:十六进制整数类型

  • %o:八进制整数类型

  • %r:原始字符串类型(带引号)

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字符串的序列操作
序号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字符串内置方法
序号Python字符串的内置方法名称内置方法说明示例结果
1upper()

全部大写

"Hello World".upper()"HELLO WORLD"
2lower()

全部小写

"Hello World".lower()"hello world"
3startswith()

是否以指定内容开头

"张三".startswith("张")True
4endswith()是否以指定内容结尾"a.mp3".endswith(".jpg")False
5isdigit()

是否是数字字符串

"36".isdigit()True
6strip()去除字符串首尾的空格或换行符号
" hi,Milk  \n".strip()
"hi,Milk"
7join()将多个字符串连接在一起
";".join(['哈尔滨', '深圳', '内蒙古'])
"哈尔滨;深圳;内蒙古"
8split()将字符串按照某个字符分割;默认按照空格分割
"哈尔滨-深圳-内蒙古".split("-")
['哈尔滨', '深圳', '内蒙古']
9find()

搜索指定字符串存在在返回搜索内容所在位置的开始索引,没有找到则返回-1

"你好,张三中国欢迎你!".find("张三")
3
10index()搜索指定字符串存在在返回搜索内容所在位置的开始索引,没有找到则直接报错
"你好,张三中国欢迎你!".index("张三")
3
11count()

统计指定字符串出现的次数

"张三 李四 王五 赵六 张三".count("张三")
2
12replace()将需要替换的内容替换为新的内容
"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)*2print(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}")

运行结果如下:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • DeepSpeed入门
  • 度小满金融大模型的应用创新
  • AIGC作答《2024年高考作文|新课标I卷》能拿多少分?
  • 测试基础11:测试用例设计方法-等价类划分
  • 定个小目标之刷LeetCode热题(14)
  • 在线按模板批量生成文本工具
  • Golang | Leetcode Golang题解之第134题加油站
  • Redis实战篇02
  • 探索智慧商场的功能架构与应用
  • Linux基础I/O
  • 【架构分析】GPU执行GEMM矩阵运算实例演示
  • idea2024年最新激活码,即拿即用
  • 用C++编写电机控制代码
  • mongodb总概
  • 以无厚,入有间,做一件事为什么靠努力不行,不能长期维持
  • hexo+github搭建个人博客
  • JavaScript-如何实现克隆(clone)函数
  • 【面试系列】之二:关于js原型
  • 2019年如何成为全栈工程师?
  • Java反射-动态类加载和重新加载
  • Mac转Windows的拯救指南
  • MQ框架的比较
  • nodejs调试方法
  • React+TypeScript入门
  • Vue ES6 Jade Scss Webpack Gulp
  • VUE es6技巧写法(持续更新中~~~)
  • Wamp集成环境 添加PHP的新版本
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 分类模型——Logistics Regression
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 检测对象或数组
  • 强力优化Rancher k8s中国区的使用体验
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我的业余项目总结
  • 新手搭建网站的主要流程
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云移动端播放器高级功能介绍
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ## 基础知识
  • #define
  • $().each和$.each的区别
  • $.ajax()参数及用法
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (5)STL算法之复制
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (回溯) LeetCode 78. 子集
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十三)MipMap
  • (学习日记)2024.01.19
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据