Python字符串:基础要点与实践应用

文章目录

  • 一、Python字符串
    • 1.介绍
    • 2.与C语言字符串比较
      • 2.1 相同点
      • 2.2 不同点
    • 3.创建Python字符串
      • 3.1 使用单引号
      • 3.2 使用双引号
      • 3.3 使用三引号
  • 二、访问字符串中的值
    • 1.索引方式
    • 2.截取方式
  • 三、Python 转义字符
    • 1.续行符\(在行尾时)
    • 2.反斜杠符号\\
    • 3.单引号\'
    • 4.双引号\"
    • 5.响铃\a
    • 6.退格\b
    • 7.空\000
    • 8.换行\n
    • 9.纵向制表符\v
    • 10.横向制表符\t
    • 11.回车\r
    • 12.换页\f
    • 13.八进制数\yyy
    • 14.十六进制数\xyy
  • 四、Python字符串运算符
    • 1.字符串连接+
    • 2.重复输出字符串*
    • 3.通过索引获取字符串中字符
    • 4.截取字符串
    • 5.成员运算符
    • 6.原始字符串
  • 五、Python 字符串格式化
    • 1.字符串格式化符号
    • 2.格式化操作符辅助指令
    • 3.f-string 格式化字符串
      • 3.1 插入变量
      • 3.2 插入表达式
      • 3.3 调用函数
      • 3.4 格式化数字
  • 六、Python 的字符串内建函数
    • 1.len(string)
    • 2.str()
    • 3.lower()
    • 4.upper()
    • 5.strip()
    • 6.replace()
    • 7.split():
    • 8.join()
    • 9.startswith()
    • 10.endswith()
  • 七、总结


一、Python字符串

1.介绍

Python字符串是一种数据类型,用于存储和操作文本数据。它可以包含任意字符,如字母、数字、符号和空格。在Python中,字符串是不可变的,意味着一旦创建,就不能更改其内容。

2.与C语言字符串比较

2.1 相同点

  1. 字符串都是以字符序列的形式存储文本数据。
  2. 都支持基本的字符串操作,如拼接、截取、比较等。
  3. 都可以使用索引和切片操作访问字符串的特定字符或子字符串。

2.2 不同点

  1. C语言中的字符串是以字符数组的形式表示,以null字符(‘\0’)作为字符串的结束标志。而Python中的字符串没有长度限制,并且不需要特殊字符来表示结尾。
  2. 在C语言中,字符串的长度需要手动计算或使用库函数来获取,而Python中可以使用len()函数直接获得字符串的长度。
  3. Python字符串是不可变的,即不能通过索引或切片修改字符串的字符。而C语言中的字符串是可变的,可以直接修改字符串的内容。
  4. Python提供了丰富的字符串处理方法和内置函数,如字符串拼接、分割、查找、替换等,使字符串的操作更加便捷。C语言中的字符串操作相对较为繁琐,需要手动编写相应的代码来完成。

3.创建Python字符串

在Python中,字符串可以通过单引号、双引号或三引号来创建。

3.1 使用单引号

str1 = 'hello world'
print(str1)  # 输出:hello world

3.2 使用双引号

str2 = "Python is awesome"
print(str2)  # 输出:Python is awesome

3.3 使用三引号

str3 = '''hello world
python'''
print(str3)
# 输出:
# hello world
# python
# 注意,使用三引号创建的字符串可以跨越多行,打印时会保留原始的换行符。

无论使用哪种方式创建字符串,一旦创建后就不能更改其内容。例如:

str1 = 'hello world'
str1[0] = 'H'   # 会报错,因为字符串是不可变的

如果需要修改字符串中的某个字符,可以通过创建一个新的字符串并赋值给原始字符串变量来实现。

str1 = 'hello world'
str1 = 'Hello'   # 创建一个新的字符串并赋值给str1
print(str1)  # 输出:Hello 

如果两个字符串完全一样,可以写成这样:

str1 = 'hello'
str2 = str1  # 将str2赋值给str1
print(str2)  # 输出:hello

二、访问字符串中的值

1.索引方式

在 Python 中,可以通过使用下标(索引)来访问字符串中的值。字符串中的每个字符都有一个对应的下标,从 0 开始递增。

str = 'hello'
print(str[0])  # 输出:h
print(str[1])  # 输出:e
print(str[2])  # 输出:l
print(str[3])  # 输出:l
print(str[4])  # 输出:o

需要注意的是,Python 中的字符串是不可变的,因此不能直接通过下标来修改字符串中的字符。如果尝试这样做,会导致 TypeError 错误。

2.截取方式

与下标索引不同的是,切片允许你访问字符串中的多个字符。你可以指定一个起始下标和一个终止下标,然后 Python 将返回该范围内的所有字符。

str = 'hello'
print(str[1:4])  # 输出:ell

在这个示例中,我们使用切片 [1:4] 访问字符串 str 中的一部分。这将返回从下标 1 到下标 3 (不包括 4)之间的所有字符。

需要注意的是,切片操作也不会修改原始字符串,而是返回一个新的字符串。因此,Python 的字符串仍然是不可变的。

三、Python 转义字符

转义字符是由反斜杠 \ 后面跟着一个特定字符组成的。

1.续行符(在行尾时)

# 续行符
print("xiao \bu \ding") # 输出xiao  bu  ding

2.反斜杠符号\

# 反斜杠
print('C:\\path\\to\\file') # 输出C:\path\to\file

3.单引号’

# 单引号
print('He said, "Hello!"') # 输出He said, "Hello!"

4.双引号"

# 双引号
print("She's happy.") # 输出She's happy.

5.响铃\a

当你在字符串中使用 \a,它会触发系统发出一个声音或者其他与响铃相关的行为。

但是需要注意的是,不是所有的终端或操作系统都会对 \a 响铃字符做出声音或其他反应。有些终端会忽略它,而有些终端可能会发出嘀嗒声、闪烁光标或其他形式的提示。

# 响铃
print('Hello \a World')

6.退格\b

# 退格
print("Hello \b World!") # 输出Hello  World!

7.空\000

# 空
print("\000")

8.换行\n

# 换行符
print('Hello\nWorld')
# Hello
# World

9.纵向制表符\v

纵向制表符 \v 用于在文本中创建垂直制表位,可以使后续文本在输出时垂直对齐。然而,大多数终端对纵向制表符的显示效果可能与预期不符,可能会被忽略或以其他方式处理。

# 纵向制表符
print('Hello\vWorld')  # 可能无法正常显示纵向制表符

10.横向制表符\t

横向制表符 \t 用于在文本中创建水平制表位,可以将后续文本对齐到下一个制表符位置。在终端上,横向制表符通常会将光标移动到下一个制表符位置,以实现对齐效果。

# 横向制表符
print('Name\tAge') # 输出Name	Age

11.回车\r

# 回车
print("Hello\rWorld!") # 输出World!

使用 \r 实现百分比进度

import timefor i in range(21):print("\r{:3}%".format(i),end=' ')time.sleep(0.05)

在这里插入图片描述

12.换页\f

\f 是一个转义字符,表示换页符。它在输出中会产生特殊效果,将光标移动到下一页或下一页面的开头位置。

然而,在大多数终端和文本编辑器中,默认情况下,换页符 \f 的效果可能不明显或不可见。因此,print(“Hello \f World!”) 在大多数情况下会与 print(“Hello World!”) 产生相同的输出结果。

# 换页
print("Hello \f World!") # 输出Hello  World!

13.八进制数\yyy

八进制数,y 代表 0~7 的字符,例如:\012 代表换行。

# 八进制数
print("\110\145\154\154\157\40\127\157\162\154\144\41") # 输出Hello World!

14.十六进制数\xyy

十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行

# 十六进制数
print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21") # 输出Hello World!

四、Python字符串运算符

1.字符串连接+

a = "Hello"
b = "World"print("a + b 输出结果:", a + b) # a + b 输出结果: HelloWorld

2.重复输出字符串*

a = "Hello"
b = "World"print("a * 2 输出结果:", a * 2) # a * 2 输出结果: HelloHello

3.通过索引获取字符串中字符

a = "Hello"print("a[1] 输出结果:", a[1]) # a[1] 输出结果: e

4.截取字符串

截取字符串中的一部分,遵循左闭右开原则,a[1:4] 是不包含第 4 个字符的。

a = "Hello"
b = "World"print("a[1:4] 输出结果:", a[1:4]) # a[1:4] 输出结果: ell

5.成员运算符

in成员运算符 - 如果字符串中包含给定的字符返回 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 True

a = "Hello"if( "H" in a) :print("H 在变量 a 中")
else :print("H 不在变量 a 中")if( "M" not in a) :print("M 不在变量 a 中")
else :print("M 在变量 a 中")

在这里插入图片描述

6.原始字符串

在 Python 中,前缀为 r 或 R 的字符串表示原始字符串,不会对反斜杠进行转义处理。因此,print( r’\n’ ) 和 print( R’\n’ ) 的输出结果都将是 \n,而不会被解释为换行符。

print( r'\n' )  # 输出 \n
print( R'\n' )  # 输出 \n

五、Python 字符串格式化

1.字符串格式化符号

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

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

剩下的就不一一列举了,有兴趣的研究下。

符号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

2.格式化操作符辅助指令

符合功能
*定义宽度或者小数点精度
-用作左对齐
+在正数前面显示加号
在正数前面显示空格
#在八进制前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’
0显示的数字前面填充’0’而不是默认的空格
%‘%%‘输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m是显示的最小总宽度,n是小数点后的位数(如果可用的话)

这里举一个实例来说明*的作用:

当使用*符号作为格式化操作符的辅助指令时,它可以用来动态定义宽度或者小数点精度。这意味着你可以在运行时指定宽度或者小数点精度的数值。

width = 10
precision = 4
value = 123.456789
print("The value is: %*.*f" % (width, precision, value))
# 输出:The value is:   123.4568

在这个示例中,%*.f中的两个分别代表宽度和小数点精度。在字符串之后的%后面,我们使用元组(width, precision, value)来动态传入宽度和小数点精度的值。因此,width的值被用来定义输出的宽度,precision的值被用来定义小数点后的位数。

3.f-string 格式化字符串

f-string 是 python3.6 之后版本添加的,f-string是一种字符串格式化的方式,可以在字符串中嵌入变量、表达式和函数的值。

f-string使用的语法是在字符串前面加上字母"f"或"F",然后用花括号{}包裹要插入的变量、表达式或函数的值。

3.1 插入变量

在下面的示例中,我们使用f-string将name和age的值插入到字符串中。

name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
# 输出:My name is Alice and I am 25 years old.

3.2 插入表达式

在下面的示例中,我们使用f-string将表达式num1 + num2的结果插入到字符串中。

num1 = 10
num2 = 5
print(f"The sum of {num1} and {num2} is {num1 + num2}.")
# 输出:The sum of 10 and 5 is 15.

3.3 调用函数

在下面的示例中,我们使用f-string将函数double的返回值插入到字符串中。

def double(x):return 2 * xnum = 5
print(f"Double of {num} is {double(num)}.")
# 输出:Double of 5 is 10.

3.4 格式化数字

在下面的示例中,我们使用f-string将格式化后的total值插入到字符串中,保留两位小数并加上美元符号。

price = 3.99
quantity = 2
total = price * quantity
print(f"The total is ${total:.2f}.")
# 输出:The total is $7.98.

六、Python 的字符串内建函数

在 Python 3.10 版本中,一共有 40 个字符串内建函数,这里选几个常用的进行介绍。

1.len(string)

获取字符串的长度。

string = "Hello, world!"
print(len(string))
# 输出:13

2.str()

将其他类型的变量转换为字符串类型。

num = 123
string = str(num)
print(string)
# 输出:"123"

3.lower()

将字符串中所有的大写字母转换为小写字母

string = "HeLLo, WoRLd!"
print(string.lower())
# 输出:"hello, world!"

4.upper()

将字符串中所有的小写字母转换为大写字母。

string = "HeLLo, WoRLd!"
print(string.upper())
# 输出:"HELLO, WORLD!"

5.strip()

去除字符串开头和结尾的空格或指定字符。

string = "###Hello, world!###"
print(string.strip("#"))
# 输出:"Hello, world!"

6.replace()

替换字符串中的某个子串。

string = "Hello, world!"
print(string.replace("world", "Python"))
# 输出:"Hello, Python!"

7.split():

将字符串按一个分隔符分割成多个子串,并返回一个列表。

string = "Hello, world!"
print(string.split(", "))
# 输出:["Hello", "world!"]

8.join()

将多个字符串连接成一个字符串。

list = ["Hello", "world!"]
print(", ".join(list))
# 输出:"Hello, world!"

9.startswith()

判断字符串是否以某个子串开头。

string = "Hello, world!"
print(string.startswith("Hello"))
# 输出:True

10.endswith()

判断字符串是否以某个子串结尾。

string = "Hello, world!"
print(string.endswith("world!"))
# 输出:True

需要注意的是,Python字符串内建函数的返回值通常是一个新的字符串对象,原字符串不会被修改。如果需要修改字符串本身,可以使用字符串的赋值操作或者其他相关操作。


七、总结

今天主要讲了Python的字符串的相关内容。

感谢你的观看,谢谢!

在这里插入图片描述

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

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

相关文章

使用Docker部署MySQL并结合内网穿透实现远程访问本地数据库

文章目录 前言1 .安装Docker2. 使用Docker拉取MySQL镜像3. 创建并启动MySQL容器4. 本地连接测试4.1 安装MySQL图形化界面工具4.2 使用MySQL Workbench连接测试 5. 公网远程访问本地MySQL5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主…

搭建nginx图片服务器

(1)将图片存储于/home/data/images目录; (2)配置nginx.conf user nginx; worker_processes 4;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 10000; }ht…

Vue3中ElementPlus组件二次封装,实现原组件属性、插槽、事件监听、方法的透传

本文以el-input组件为例,其它组件类似用法。 一、解决数据绑定问题 封装组件的第一步,要解决的就是数据绑定的问题,由于prop数据流是单向传递的,数据只能从父流向子,子想改父只能通过提交emit事件通知父修改。 父&a…

移动Web——平面转换-旋转

1、平面转换-旋转 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

在使用springboot框架式的的script无法通过${}来获取值

今天使用springboot框架做项目&#xff0c;想着来实现一下搜索的下拉框回显功能&#xff0c;然后就一直在报错误&#xff0c;关键是报的错误牛头不对马嘴&#xff0c;检查了一下后端代码&#xff0c;发现没什么问题&#xff0c;就把目光聚焦了.jsp页面的代码 <script type&…

主流影视网站8合一H5源码

目前影视接口完好&#xff0c;可正常观看影视。 上传即可使用 包括了 百度视频风格 PP视频风格 咪咕爱看风格 爱奇艺风格 腾讯视频风格 优酷视频风格 搜狐视频风格 B站风格 8种主流影视网站&#xff0c;喜欢那个用那个

【STM32】STM32学习笔记-Unix时间戳(41)

00. 目录 文章目录 00. 目录01. Unix时间戳02. UTC/GMT03. 时间戳转换04. C 标准库 <time.h>05. 时间相关函数示例5.1 time函数5.2 gmtime函数5.3 localtime函数5.4 mktime函数5.5 ctime函数5.6 asctime函数5.7 strftime函数 06. 预留07. 附录 01. Unix时间戳 •Unix 时…

2024-macOS系统或Kail系统重——破解ZIP压缩的文件密码

2024-macOS系统或Kail系统重——破解ZIP压缩的文件密码 1. 你们有遇见这样子的情况么&#xff1a; 别人给你发的zip或者下载的zip文件&#xff0c;没有密码打不开么网上都是win系统的&#xff0c;都是没有macOS系统的&#xff0c;所以比较烦恼 2. 所以我就想到了代码&#x…

gradle简单入门

安装 需要有Java环境 下载地址&#xff1a;https://gradle.org/releases/ 8.5版本仅有二进制文件&#xff1a;https://gradle.org/next-steps/?version8.5&formatbin 8.5版本包含文档和源码及二进制文件&#xff1a;https://gradle.org/next-steps/?version8.5&f…

无线路由探索

实验大纲 第一部分&#xff1a; 探索无线网络 步骤 1&#xff1a; 探索拓扑 步骤 2&#xff1a; 验证连接 第二部分&#xff1a; Wi-Fi 连接添加到董事会议室 步骤 1&#xff1a; 安装新的 LAP-PT 设备以覆盖新的董事会议室 步骤 2&#xff1a; 检验连接 第三部分&#…

Git初识

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 在学习Git之前我们先引入一…

C/C++ - 面向对象编程

面向对象 面向过程编程&#xff1a; 数据和函数分离&#xff1a;在C语言中&#xff0c;数据和函数是分开定义和操作的。数据是通过全局变量或传递给函数的参数来传递的&#xff0c;函数则独立于数据。函数为主导&#xff1a;C语言以函数为主导&#xff0c;程序的执行流程由函数…

外卖跑腿系统开发:构建高效、安全的服务平台

在当今快节奏的生活中&#xff0c;外卖跑腿系统的开发已成为技术领域的一个重要课题。本文将介绍如何使用一些常见的编程语言和技术框架&#xff0c;构建一个高效、安全的外卖跑腿系统。 1. 技术选择 在开始开发之前&#xff0c;我们需要选择适合的技术栈。常用的技术包括&a…

DDT数据驱动测试

简单介绍 ​ DDT&#xff08;Date Driver Test&#xff09;&#xff0c;所谓数据驱动测试&#xff0c; 简单来说就是由数据的改变从而驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。通过使用数据驱动测试的方法&#xff0c;可以在需要验证多组数据测试场景中&…

详细分析Java的树形工具类(含注释)

目录 前言1. 基本框架2. 实战应用 前言 对应的每个子孙属于该父亲&#xff0c;这其实是数据结构的基础知识&#xff0c;那怎么划分怎么归属呢 对应的基本知识推荐如下&#xff1a; 【数据结构】树和二叉树详细分析&#xff08;全&#xff09;【数据结构】B树和B树的笔记详细…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)二

第六部分、数据结构树&#xff0c;树存储结构详解 数据结构的树存储结构&#xff0c;常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中&#xff0c;最常用的还是二叉树&#xff0c;本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

Docker部署思维导图工具SimpleMindMap并实现公网远程访问

文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性&#xff0c;包含插件化架构、多种结构类型&…

【Unicode】Character ‘ENQUIRY‘ (U+0005)

询问 result.append("\u0005");Unicode Character ‘ENQUIRY’ (U0005)

js中字符串string,遍历json/Object【匹配url、邮箱、电话,版本号,千位分割,判断回文】

目录 正则 合法的URL 邮箱、电话 字符串方法 千位分割&#xff1a;num.slice(render, len).match(/\d{3}/g).join(,) 版本号比较 判断回文 json/Object 遍历 自身属性 for...inhasOwnProperty(key) Object.获取数组(obj)&#xff1a;Object.keys&#xff0c;Object…

深度强化学习(王树森)笔记02

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…