Python基础——字符串

news2024/11/24 7:15:16

一、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)*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}")


运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子电气架构 ---车载安全防火墙

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

docker——基础知识

简介 一、什么是虚拟化和容器化 ​ 实体计算机叫做物理机,又时也称为寄主机; ​ 虚拟化:将一台计算机虚拟化为多态逻辑计算机; ​ 容器化:一种虚拟化技术,操作系统的虚拟化;将用户空间软件实…

【数据结构】 -- 堆 (堆排序)(TOP-K问题)

引入 要学习堆,首先要先简单的了解一下二叉树,二叉树是一种常见的树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。它具有以下特点: 根节点(Root):树的顶部节…

为什么Kubernetes(K8S)弃用Docker:深度解析与未来展望

为什么Kubernetes弃用Docker:深度解析与未来展望 🚀 为什么Kubernetes弃用Docker:深度解析与未来展望摘要引言正文内容(详细介绍)什么是 Kubernetes?什么是 Docker?Kubernetes 和 Docker 的关系…

iOS 17.5中的一个漏洞

i0S 17.5中的一个漏洞 iOS 17.5中的一个漏洞会使已刚除的照片重新出现,并目此问题似乎会影响甚至已擦除并出售给他人的 iPhone 和 iPad. 在2023年9月,一位Reddit用户根据Apple的指南擦除了他的iPad,并将其卖给了一位朋友。然而,这…

Spring @Transactional 事务注解

一、spring 事务注解 1、实现层(方法上加) import org.springframework.transaction.annotation.Transactional;Transactional(rollbackFor Exception.class)public JsonResult getRtransactional() {// 手动标记事务回滚TransactionAspectSupport.currentTransactionStatus…

Python第二语言(二、Python语言基础)

目录 1. python中常用的6中数据类型 2. Print语句(输出程序) 3. 字面量 4. 注释 5. 变量 6. 数据类型 7. type()语句:查询数据类型 8. 数据类型转换语句 9. 标识符 10. 算术运算符 11. 赋值运算符 && 复合赋值运算符 12. …

Polar Web【困难】上传

Polar Web【困难】上传 Contents Polar Web【困难】上传探索&思路&效果进入环境绕过过程Webshell连接 EXPPayload 总结 探索&思路&效果 本题的主题可见为文件上传,详情在破解的过程中逐步发掘: 进入环境,为一个文件上传功界面…

零基础入门篇①⑦ Python可变序列类型--集合

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏限时一个月(5.8~6.8)重…

【UML用户指南】-12-对高级结构建模-接口、类型和角色

目录 1、名称 2、操作 3、关系 4、理解接口 5、常用建模技术 5.1、对系统中的接缝建模 5.2、对静态类型和动态类型建模 5.2.1、对静态类型建模 5.2.2、对动态类型建模 使接口易于理解和易于访问 接口在关于一个抽象做什么的描述与关于这个抽象如何做的实现之间定义了…

数仓建模中的一些问题

​​​在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见有以下问题: 数仓常见问题 ● 数仓分层不清晰:数仓的分层没有明确的逻辑,难以管理和维护。 ● 数据域划分不明确…

ipynb转markdown的简单方法

在线转换 推荐在线转换,拖进去后下载就行,简单易操作。 Convert Jupyter notebook to GitHub-Flavored Markdown for free on AlldocsThe free text converter for all your documents.https://alldocs.app/convert-jupyter-notebook-to-markdown vsc…

RHEL8/Centos8 install for PXE

PXE介绍 PXE(Preboot Execution Environment)是预引导执行环境的缩写。它是由Intel设计的,允许客户端计算机通过网络从服务器上加载操作系统镜像。PXE通常用于大规模部署操作系统,例如在企业或学校环境中。 PXE工作流程如下&…

Windows安装运行elasticsearch服务

官方下载地址:Download Elasticsearch | Elastic 我在linux上执行的下载命令:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz Elasticsearch(简称ES)是一款基于Apache Lu…

Functional ALV系列 (10) - 将填充FieldCatalog封装成函数

在前面的博文中,已经讲了封装的思路和实现,主要是利用 cl_salv_data_descr>read_structdescr () 方法来实现。在这里,贴出代码方便大家参考。 编写获取内表组件的通用方法 form frm_get_fields using pt_data type any tablechanging…

OpenFeign远程接口调用使用公共模块出现的错误

今天在使用openfeign和sentinel实现fallback服务降级时遇到找不到类型的异常 检查代码发现没有错误,EnableFeignClients也在启动类上标注了 错误信息:A component required a bean of type com.zxc.cloud.apis.PayFeignSentinelApi that could not be f…

Effective Java 2 遇到多个构造器参数时要考虑使用构建器

第2个经验法则:用遇到多个构造器参数时要考虑使用构建器(consider a builder when faced with many constructor parameters) 上一条讨论了静态工厂相对于构造器来说有五大优势。但静态工厂和构造器有个共同的局限性:它 们都不能很好地扩展到…

SpringBoot——整合WebSocket长连接

目录 WebSocket 项目总结 新建一个SpringBoot项目 pom.xml WebSocketConfig配置类 TestWebSocketEndpoint服务端点类 socket.html客户端 IndexController控制器 SpringbootWebsocketApplication启动类 测试客户端和服务端如何使用WebSocket进行连接和通信 WebSocket S…

LayUI的暗淡:错误的押宝了前后端不分离

LayUI是一个不错的中后台UI框架,贝格前端工场用的CMS就是基于layUI的,可以说简单轻便。除此之外,贝格前端工场很少接到客户要求升级LayUI界面,或者采用LayUI框架的。 一、LayUI官网的谢幕,吹起了前后端不分离模式没落…

Java Set系列集合的使用规则和场景(HashSet,LinkedHashSet,TreeSet)

Set集合 package SetDemo;import java.util.HashSet; import java.util.Iterator; import java.util.Set;public class SetDemo {public static void main(String[] args) {/*Set集合的特点:1.Set系列集合的特点:Set集合是一个存储元素不能重复的集合方…