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

07 Python 字符串全解析

文章目录

    • 一. 字符串的定义
    • 二. 字符串的基本用法
      • 1. 访问字符串中的字符
      • 2. 字符串切片
      • 3. 字符串拼接
      • 4. 字符串重复
      • 5.字符串比较
      • 6.字符串成员运算
    • 三. 字符串的常用方法
      • 1. `len()` 函数
      • 2. `upper()` 和 `lower()` 方法
      • 3. `strip()` 方法
      • 4. `replace()` 方法
      • 5. `split()` 方法
    • 四. 字符串的进阶用法
      • 1. 格式化字符串
      • 2. 字符串的转义字符
      • 3. 字符串的编码与解码
      • 4.原始字符串
      • 5.字符串的特色表示

在 Python 里,字符串属于内置的数据类型,用来表示文本数据。

一. 字符串的定义

在 Python 中,定义字符串的方式多样且灵活。单引号是常用的一种,如 str1 = ‘Hello, World!’,能简洁地包裹普通文本。双引号同样适用,str2 = “Python is great”,与单引号在功能上并无本质区别,主要用于满足不同场景下代码风格或字符串内容中包含单引号的情况 。而三引号则独具魅力,str3 = ‘’‘This is a multi - line string.’‘’,它允许创建多行字符串,对于需要保留格式的文本,如文档注释、诗歌等,极为便利。字符串中的字符类型丰富,除常见的英文字母、特殊符号外,中文字符、日文假名、希腊字母以及 Emoji 字符(如:💩、🐷、🀄️)等均可包含其中,极大拓展了字符串的表现力。。

# 使用单引号定义字符串
str1 = 'Hello, World!'
# 使用双引号定义字符串
str2 = "Python is great"
# 使用三引号定义多行字符串
str3 = '''This is a
multi - line string.'''

二. 字符串的基本用法

1. 访问字符串中的字符

字符串是一个序列,你可以通过索引来访问其中的字符,索引从 0 开始。可以精准访问其中字符

str4 = "Hello"
print(str4[0])  # 输出 'H'
print(str4[-1])  # 输出 'o',负索引表示从字符串末尾开始计数

2. 字符串切片

你可以使用切片来获取字符串的一部分。

str5 = "Python Programming"
print(str5[0:6])  # 输出 'Python'
print(str5[7:])  # 输出 'Programming'

3. 字符串拼接

可以使用 + 运算符来拼接两个或多个字符串。

str6 = "Hello"
str7 = " World"
print(str6 + str7)  # 输出 'Hello World'

4. 字符串重复

使用 * 运算符可以重复字符串。

str8 = "Hi"
print(str8 * 3)  # 输出 'HiHiHi'

5.字符串比较

可以使用比较运算符(如 ==、!=、<、>、<=、>=)对字符串进行比较。比较时是按照字符的 ASCII 码值逐字符进行比较的。

str9 = "apple"
str10 = "banana"
print(str9 == str10)  # 输出: False
print(str9 < str10)  # 输出: True,因为 'a' 的 ASCII 码值小于 'b'

6.字符串成员运算

使用 innot in运算符可以检查一个字符串是否包含另一个字符串

str11 = "hello python"
print("python" in str11) # 输出: True
print("javascript" not in str11) # 输出:True

三. 字符串的常用方法

1. len() 函数

用于返回字符串的长度。

str9 = "Python"
print(len(str9))  # 输出 6

2. upper()lower() 方法

upper() 方法将字符串中的所有字母转换为大写,lower() 方法将字符串中的所有字母转换为小写。

str10 = "Hello"
print(str10.upper())  # 输出 'HELLO'
print(str10.lower())  # 输出 'hello'

3. strip() 方法

用于去除字符串首尾的空白字符。

str11 = "   Hello   "
print(str11.strip())  # 输出 'Hello'

4. replace() 方法

用于替换字符串中的指定子字符串。

str12 = "Hello, World"
print(str12.replace("World", "Python"))  # 输出 'Hello, Python'

5. split() 方法

根据指定的分隔符将字符串分割成一个列表。

str13 = "apple,banana,cherry"
print(str13.split(","))  # 输出 ['apple', 'banana', 'cherry']

四. 字符串的进阶用法

1. 格式化字符串

Python 提供了多种字符串格式化的方式,如旧式的 % 格式化、str.format() 方法和 f - 字符串。

旧式的 % 格式化

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))

str.format() 方法

name = "Bob"
age = 30
print("My name is {} and I am {} years old.".format(name, age))

f - 字符串(Python 3.6+)

name = "Charlie"
age = 35
print(f"My name is {name} and I am {age} years old.")

2. 字符串的转义字符

在字符串中,你可以使用转义字符来表示一些特殊字符,如换行符 \n、制表符 \t 等。

print("Hello\nWorld")  # 输出两行:Hello 和 World

3. 字符串的编码与解码

在 Python 中,字符串可以进行编码(将字符串转换为字节序列)和解码(将字节序列转换为字符串)。

str14 = "你好"
# 编码
bytes_str = str14.encode('utf-8')
# 解码
decoded_str = bytes_str.decode('utf-8')
print(decoded_str)  # 输出 '你好'

4.原始字符串

Python 中有一种以rR开头的字符串,这种字符串被称为原始字符串,意思是字符串中的每个字符都是它本来的含义,没有所谓的转义字符。例如,在字符串'hello\n'中,\n表示换行;而在r'hello\n'中,\n不再表示换行,就是字符\和字符n。大家可以运行下面的代码,看看会输出什么。

s1 = '\it \is \time \to \read \now'
s2 = r'\it \is \time \to \read \now'
print(s1)
print(s2)

说明:上面的变量s1中,\t\r\n都是转义字符。\t是制表符(table),\n是换行符(new line),\r是回车符(carriage return)相当于让输出回到了行首。对比一下两个print函数的输出,看看到底有什么区别!

5.字符串的特色表示

Python 中还允许在\后面还可以跟一个八进制或者十六进制数来表示字符,例如\141\x61都代表小写字母a,前者是八进制的表示法,后者是十六进制的表示法。另外一种表示字符的方式是在\u后面跟 Unicode 字符编码,例如\u9a86\u660a代表的是中文“骆昊”。运行下面的代码,看看输出了什么。

s1 = '\141\142\143\x61\x62\x63'
s2 = '\u9a86\u660a'
print(s1)
print(s2)

相关文章:

07 Python 字符串全解析

文章目录 一. 字符串的定义二. 字符串的基本用法1. 访问字符串中的字符2. 字符串切片3. 字符串拼接4. 字符串重复5.字符串比较6.字符串成员运算 三. 字符串的常用方法1. len() 函数2. upper() 和 lower() 方法3. strip() 方法4. replace() 方法5. split() 方法 四. 字符串的进阶…...

androidstudio安装配置

B站配置视频AndroidStudio安装配置教程&#xff08;最新版本教程&#xff09;3分钟搞定 快速安装使用_哔哩哔哩_bilibili 1、环境变量 D:\AndroidSdk ANDROID_HOME ANDROID_SDK_HOME 2、新建 3、配置 distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-…...

全面解析 MCP(Model Context Protocol):AI 大模型的“万能连接器”

一、MCP 的定义与技术定位 **MCP(Model Context Protocol,模型上下文协议)**是由 Anthropic 公司于 2024 年 11 月推出的开源协议,旨在为 AI 大模型与外部数据源、工具之间建立标准化连接通道。它被业界称为 “AI 的 USB-C 接口”,通过统一的通信协议和数据结构,解决大模…...

《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现

基于RAG向量数据库的知识库AI问答助手设计与实现 引言 随着大语言模型&#xff08;LLM&#xff09;技术的快速发展&#xff0c;构建本地知识库AI问答助手已成为许多企业级应用的需求。本研究报告将详细介绍如何基于FLASK开发一个使用本地OLLAMA大模型底座的知识库AI问答助手&…...

Lua 第8部分 补充知识

8.1 局部变量和代码块 Lua 语言中的变量在默认情况下是全局变量 &#xff0c;所有的局部变量在使用前必须声明 。 与全局变量不同&#xff0c;局部变量的生效范围仅限于声明它的代码块。一个代码块&#xff08; block &#xff09;是一个控制结构的主体&#xff0c;或是一个函…...

正则表达式三剑客之——awk命令

目录 一.什么是awk 二.awk的语法格式 1.选项 2. 模式&#xff08;Pattern&#xff09; 3. 操作&#xff08;Action&#xff09; 4. 输入文件&#xff08;file&#xff09; 5.总结 三.awk的工作原理 1. 逐行扫描输入 2. 匹配模式 1.正则表达式&#xff1a; 2.逻辑…...

BeeWorks Meet:私有化部署视频会议的高效选择

在数字化时代&#xff0c;视频会议已成为企业沟通协作的重要工具。然而&#xff0c;对于金融、政务、医疗等对数据安全和隐私保护要求极高的行业来说&#xff0c;传统的公有云视频会议解决方案往往难以满足其严格的安全标准。此时&#xff0c;BeeWorks Meet 私有化部署视频会议…...

[Mybatis-plus]

简介 MyBatis-Plus &#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变。Mybatis-plus官网地址 注意&#xff0c;在引入了mybatis-plus之后&#xff0c;不要再额外引入mybatis和mybatis-spring&#xff0c;避免因为版本…...

IPv6 技术细节 | 源 IP 地址选择 / Anycast / 地址自动配置 / 地址聚类分配

注&#xff1a;本文为 “IPv6 技术细节” 相关文章合集。 部分文章中提到的其他文章&#xff0c;一并引入。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 闲谈 IPv6 - 典型特征的一些技术细节 iteye_21199 于 2012-11-10 20:54:00 发布 0. 巨大的…...

【高频考点精讲】ES6 String的新增方法,处理字符串更方便了

ES6 String的新增方法:处理字符串从未如此优雅 【初级】前端开发工程师面试100题(一) 【初级】前端开发工程师面试100题(二) 【初级】前端开发工程师的面试100题(速记版) 作为天天和字符串打交道的码农,谁还没被indexOf和substring折磨过?ES6给String对象新增的几个方…...

【工具】使用 MCP Inspector 调试服务的完全指南

Model Context Protocol (MCP) Inspector 是一个交互式开发工具&#xff0c;专为测试和调试 MCP 服务器而设计。本文将详细介绍如何使用 Inspector 工具有效地调试和测试 MCP 服务。 1. MCP Inspector 简介 MCP Inspector 提供了直观的界面&#xff0c;让开发者能够&#xff…...

【音视频】AVIO输入模式

内存IO模式 AVIOContext *avio_alloc_context( unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), int64_t (*seek)(…...

AI与思维模型【76】——SWOT思维模型

一、定义 SWOT思维模型是一种用于分析事物内部和外部因素的战略规划工具。其中&#xff0c;S代表优势&#xff08;Strengths&#xff09;&#xff0c;是指事物自身所具备的独特能力、资源或特点&#xff0c;这些因素有助于其在竞争中取得优势&#xff1b;W代表劣势&#xff08…...

大模型提示词如何编写

一、提示词的核心三要素 明确目标&#xff08;What&#xff09; 告诉 AI「你要它做什么」&#xff0c;越具体越好。 ❌ 模糊&#xff1a;写一篇文章 ✅ 清晰&#xff1a;写一篇 800 字的高考作文&#xff0c;主题 “坚持与创新”&#xff0c;结构分引言、三个论点&#xff08;…...

python如何取消word中的缩进

在python-docx中&#xff0c;取消缩进可以通过将相应的缩进属性设置为None或0来实现。以下是取消不同类型缩进的方法&#xff1a; 取消左缩进 from docx import Documentdoc Document(existing_document.docx)for paragraph in doc.paragraphs:# 取消左缩进paragraph.paragr…...

DDL小练习

1.创建一张t_user表 要求属性有id(INT),name(VARCHAR),sex(VARCHAR),birthday(DATE) 其中id和name不能为空&#xff0c;添加数据并测试。 创建数据库 create database spt2503; 创建数据库中的t_user表 create table t_user (id int not null, name varchar(20) not…...

Uniapp:scroll-view(区域滑动视图)

目录 一、基本概述二、属性说明三、基本使用3.1 纵向滚动3.2 横向滚动一、基本概述 scroll-view,可滚动视图区域。用于区域滚动。 二、属性说明 属性名类型默认值说明平台差异说明scroll-xBooleanfalse允许横向滚动scroll-yBooleanfalse允许纵向滚动三、基本使用 3.1 纵向滚…...

【前端】【面试】在前端开发中,如何实现图片的渐进式加载,以及这样做的好处是什么?

题目&#xff1a;在前端开发中&#xff0c;如何实现图片的渐进式加载&#xff0c;以及这样做的好处是什么&#xff1f; 在浏览器端实现图片的“渐进式加载”&#xff08;Progressive Image Loading&#xff09;常用的三种方式 方法思路典型实现要点适用场景优缺点简述1. 使…...

单精度浮点运算/定点运算下 MATLAB (VS) VIVADO

VIVADO中单精度浮点数IP核计算结果与MATLAB单精度浮点数计算结果的对比 MATLAB定点运算仿真&#xff0c;对比VIVADO计算的结果 目录 前言 一、VIVADO与MATLAB单精度浮点数运算结果对比 二、MATLAB定点运算仿真 总结 前言 本文介绍了怎么在MATLAB中使用单精度浮点数进行运算…...

基于大模型对先天性巨结肠全流程预测及医疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型在先天性巨结肠预测中的理论基础 2.1 大模型概述 2.2 大模型预测先天性巨结肠的可行性分析 三、术前预测与准备方案 3.1 大模型对术前病情的预测 3.1.1 疾病确诊预测 3.1.2 病情严重程度评估 3.2 …...

【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明

一、产品简介 AiCoder是一款为Notepad设计的轻量级AI辅助插件&#xff0c;提供以下核心功能&#xff1a; 嵌入式提问&#xff1a;对选中的文本内容进行AI分析&#xff0c;通过侧边栏聊天界面与AI交互&#xff0c;实现多轮对话、问题解答或代码生成。对话式提问&#xff1a;独…...

【MySQL数据库入门到精通-07 函数-字符串函数、数值函数、日期函数和流程函数】

文章目录 一、字符串函数1. MySQL中的函数主要分为以下四类&#xff1a; 字符串函数、数值函数、日期函数、流程函数。下面是字符串函数常见的函数&#xff0c;见下表。2.具体代码实现3.结果 二、数值函数1.知识点2.具体代码实现3.结果 三、日期函数1.知识点2.具体代码实现3.结…...

Python图像处理——基于Retinex算法的低光照图像增强系统

1.项目内容 &#xff08;1&#xff09;算法介绍 ①MSRCR (Multi-Scale Retinex with Color Restoration) MSRCR 是多尺度 Retinex 算法&#xff08;MSR&#xff09;的扩展版&#xff0c;引入了色彩恢复机制以进一步提升图像增强质量。MSR 能有效地压缩图像动态范围&#xff…...

如何在JDK17项目中改成1.8

1.调整 Spring Boot 版本 由于 Spring Boot 3.x 最低要求 JDK 17&#xff0c;所以如果要使用 JDK 8&#xff0c;需要把 spring-boot-starter-parent 的版本降低到 2.7.x 系列&#xff0c;这个系列是支持 JDK 8 的。示例如下&#xff1a; <parent><groupId>org.sp…...

【不同名字的yolo的yaml文件名是什么意思】

以下是这些 YOLO 系列配置文件的详细解析&#xff0c;按版本和功能分类说明&#xff1a; 一、YOLOv3 系列 文件名核心特性适用场景yolov3.yaml原始 YOLOv3 结构&#xff0c;3 尺度预测&#xff08;13x13,26x26,52x52&#xff09;通用目标检测yolov3-spp.yaml增加 SPP&#xff…...

Zephyr kernel Build System (CMake)介绍

目录 概述 1. 结构介绍 2 构建和配置阶段 2.1 配置阶段 2.2 Cmake编译 3 Zephy项目目录结构 3.1 文件架构 3.2 文件content 概述 本文主要介绍Zephyr kernel Build System CMake的功能&#xff0c;以及使用该工具构建项目&#xff0c;并详细介绍了每个目录以及目录下文…...

相对论大师-记录型正负性质BFS/图论-链表/数据结构

看到这一题我的第一个思路就是双向bfs 起点是a&#xff0c;终点还是a&#xff0c;但是flag是相反的&#xff08;“越”的方向&#xff09; tip1.可以用字典vis来存储flag 刚开始初始化时vissta,visend一个对应0、1 要求两个队列相…...

研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区

&#x1f4cc; 背景 | 全面注册制下&#xff0c;研发内控成“必修课” 在全面注册制背景下&#xff0c;证监会发布的《监管规则适用指引——发行类第9号&#xff1a;研发人员及研发投入》&#xff08;简称“发行类9号”&#xff09;&#xff0c;对企业的研发费用归集、研发工时…...

Jenkins流水线管理工具

文章目录 前言&#xff1a; DevOps时代的自动化核心 —Jenkins一、Jenkins是什么&#xff1f;二、Linux安装Jenkinswar包方式安装依赖环境下载 Jenkins WAR 包启动 Jenkins 服务启动日志验证配置插件镜像源 docker镜像方式安装依赖环境拉取 Jenkins 镜像运行 Jenkins 容器获取初…...

嵌入式开发:基础知识介绍

一、嵌入式系统 1、介绍 以提高对象体系智能性、控制力和人机交互能力为目的&#xff0c;通过相互作用和内在指标评价的&#xff0c;嵌入到对象体系中的专用计算机系统。 2、分类 按其形态的差异&#xff0c;一般可将嵌入式系统分为&#xff1a;芯片级&#xff08;MCU、SoC&am…...