Python字符串操作全攻略

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

目录

一、字符串的简介

二、字符串的定义

三. 字符串的特性

四·、内置函数

五、常见操作

六、字符串格式化 

七、转义符

八、补充


一、字符串的简介

        字符串(String)是计算机编程中最基本且常用的数据类型之一,用于表示文本数据。它由一系列字符(字母、数字、符号或空格)组成,通常以特定的编码方式(如ASCII、Unicode)存储。

二、字符串的定义

(1)字符串是由字符序列组成的不可变数据类型。

(2)在代码中,字符串通常用引号包裹:

  • 单引号:'Hello'
  • 双引号"World"
  • 三引号:用于多行字符串('''多行文本''' 或 """多行文本""")。

三. 字符串的特性

(1) 不可变性

- 字符串一旦创建,内容不可修改。每次操作都会生成新字符串。

s = "abc"
s += "d"  # 实际上是创建了新字符串"abcd"
print(s)

(2) 索引和切片

- 可以通过索引访问字符(从0开始),或通过切片获取子字符串。

s = "Python"
print(s[0])    # 输出 'P'
print(s[2:5])  # 输出 'tho'

(3) 长度

使用函数获取字符数量:

s = "Python"
print(len(s))               #输出结果是 6

四·、内置函数

类型方法描述
字符串
转换函数
string.capitalize()将 sting.的第一个字符转换成大写
string.lower()将sting 中所有大写字符为转换为小写
string.upper()将 string 中所有大写字符为转换为大写
string.swapcase()将 string中所有字符大小写翻转
string.center(width)将string字符串扩充至 width长度,原字符串居中,两边填充空格
string.format(str)将 st格式化为指定的string 模式
字符串处理函数string.strip(str)将sting的左右两边指定字符去掉
string.replace(strl,str2)将string 中的 strl 替换成 str2
string.split(str="")将string切片,str 为分隔符
string.join(seq)以string 作为分隔符,将seq中所有的元素(的字符串表示)合并为一
字符串
判断
函数
string.fnd(str)检测str是否包含在sting中,如果是返回开始的索引值,否则返回-1
string.isalnum()如果 string至少有一个字符,并且所有字符都是字母或数字则返回 True,否则返回False
string.isalpha()如果 sting至少有一个字符,并且所有字符都是字母则返回 True,否则返回 False
string.isdecimal()如果 string 只包含十进制数字,则返回 True,否则返回 False.
string.isnumeric()如果 string中只包含数字字符,则返回True,否则返回False
string.startswith(obj)检查字符串是否是以obj开头,是则返回True,否则返回False。
string.endswith(obj)检查字符串是否以obj结束,如果是,返回True,否则返回False.
string.count(str)返回str在 string中出现的次数

五、常见操作

(1)拼接:连接多个字符串。

s1 = "Hello"; s2 = "World"
result = s1 + " " + s2  # "Hello World"
print(result)                       #输出 Hello World

(2)分割:按分隔符拆分为列表。

s = "苹果,菠萝,西瓜"
words = s.split(",")
print(words)                 #输出 ['苹果,菠萝,西瓜']
print(type(words))           # <class 'list'>
print(type(words[0]))        # <class 'str'>

s = "apple,banana,orange"
fruits = s.split(",")
print(fruits)                #输出 ["apple", "banana", "orange"]
​print(type(fruits ))         # <class 'list'>
print(type(fruits [0]))      # <class 'str'>

这是输出结果:

        我刚觉得这两个结果数据类型不一样,但是输出的数据类型是一样的,我们来讨论这是为什么呢?问题在于原始字符串使用中文逗号)分隔,但用英文逗号(,)调用 split(","),则分割会失败。如果我们查看第一个元素的数据类型会怎么样呢?让我们来试试。

s = "苹果,菠萝,西瓜"
words = s.split(",")
print(words)                 #输出 ['苹果,菠萝,西瓜']
print(type(words))           # <class 'list'>
print(type(words[1]))        # <class 'str'>

输出结果:

        结果报错了耶,因为这时候列表 '苹果,菠萝,西瓜' 是一个未分割的字符串。

如果我们把 ‘ s = "苹果,菠萝,西瓜" ’中的中文逗号改成英文逗号会怎么样呢?让我们来试试。

s = "苹果,菠萝,西瓜"
words = s.split(",")
print(words)                 #输出 ['苹果,菠萝,西瓜']
print(type(words))           # <class 'list'>
print(type(words[1]))        # <class 'str'>

输出结果:

        这时候输出的结果是对的,所以我们一定要注意中英文符号使用。

(3)查找与替换:

s = "hello world"
print(s.find("world"))                # 找到索引位置
print(s.replace("world", "Python"))   # 替换子串

输出结果:

(4)大小写转换:

s = "Hello"
print(s.lower())  # "hello"
print(s.upper())  # "HELLO"

六、字符串格式化 

        虽然前面讲过了,但是我们现在来在仔细的研究研究。

1、字符串 format() 方法的基本使用格式是:<模版字符串>.format(<逗号分割的参数>)

它灵活且兼容性强的格式化方式,支持复杂场景。

(1)位置参数

print("{} bought {} apples.".format("Alice", 3))  # Alice bought 3 apples.

(2)关键字参数

print("{name} likes {color}.".format(name="I", color="blue"))  # I likes blue.

(3)索引复用

        在 Python 的 str.format() 方法中,字符串中的 {0}{1}{2} 等占位符对应的是传递给 format() 方法的参数的位置索引(从 0 开始计数)。

print("{0} + {0} = {1}".format(2, 4))  # 2 + 2 = 4

print("{1} + {1} = {2}".format(4, 8,16))  # 8 + 8 = 16

(4)格式规范----常见的格式化语法

​
# 数字格式
print("价格: ¥{:.2f}".format(19.99))                   # 价格: ¥19.99

# 对齐与填充
print("{:<10}|{:^10}|{:>10}".format("左", "中", "右"))  # 左        |    中    |        右

# 进制转换
print("二进制: {:b}".format(255))                       # 二进制: 11111111

​

2、 f-string

基本格式:f"{变量:格式}"

        最简洁、高效的格式化方式,直接在字符串中嵌入变量和表达式。

(1)基础用法

name = "Alice"
age = 18
print(f"{name} is {age} years old.")  # Alice is 18 years old.

(2)表达式和函数调用

age =  25
# 数学运算
print(f"Next year: {age + 1}")  # Next year: 26

# 调用方法
text = "HELLO"
print(f"{text.lower()} world")  # hello world

# 直接使用对象属性
class User:
    def __init__(self, name):
        self.name = name
user = User("Bob")
print(f"User: {user.name}")  # User: Bob

(3)格式控制

price = 19.99
num = 1000000

# 数字格式
print(f"价格: ¥{price:.2f}")       # 价格: ¥19.99(保留2位小数)
print(f"科学计数: {price:.2e}")     # 科学计数: 1.00e+01
print(f"千分位: {num:,}")           # 千分位: 1,000,000

# 对齐与填充
print(f"{'左对齐':<15}")            # 左对齐          
print(f"{'右对齐':>15}")            #           右对齐
print(f"{'居中':^15}")              #      居中      

# 进制转换
n = 255
print(f"十六进制: {n:#x}")          # 十六进制: 0xff
print(f"二进制: {n:b}")             # 二进制: 11111111

运行结果:

(4)转义特殊字符

# 输出大括号
print(f"{{Hello}}")  # {Hello}

# 输出反斜杠(需结合普通字符串)
path = "C:\\Users"
print(f"路径: {path}")  # 路径: C:\Users

3、旧式 % 格式化

        适用于旧代码或简单场景。

​
​
# 基础用法
print("Name: %s, Age: %d" % ("Alice", 18))      # Name: Alice, Age: 18

# 字典参数
data = {"name": "Bob", "age": 20}
print("Name: %(name)s, Age: %(age)d" % data)    # Name: Bob, Age: 20

# 格式控制
print("价格: ¥%.2f" % 19.99)                   # 价格: ¥19.99

​

​

4、模板字符串

        适用于用户输入等安全敏感场景,防止注入攻击。

from string import Template

t = Template("$name is $age years old.")
print(t.substitute(name="Alice", age=25))  # Alice is 25 years old.

# 安全处理缺失键
print(t.safe_substitute(name="Bob"))  # Bob is $age years old.

        Template 是 string 模块提供的一个字符串模板工具,用于实现安全的字符串替换(尤其适用于处理用户输入的动态内容)。

  • substitute():严格替换,若变量未提供会抛出 KeyError

  • safe_substitute():安全替换,缺失变量保留原占位符。

字符串格式化方法对比
方法特点
str.format()功能强大,支持复杂格式(如对齐、数字格式化),但需防范注入风险。
f-string高效直观,直接内嵌变量,但动态内容需谨慎处理。
Template简单安全,适合处理不可信输入(如用户输入),语法简洁($ 占位符)。

七、转义符

转义符描述示例
\n换行符"Line1\nLine2"
\t制表符(Tab)"Name:\tAlice"
\\反斜杠本身"C:\\Users"
\"双引号(在双引号字符串内)"He said: \"Hello\""
\'单引号(在单引号字符串内)'It\'s mine'
\r回车符(光标回到行首)"Loading...\rDone!"
\b退格符(删除前一个字符)"Hello\b World" → "Hell World"
\xHH十六进制编码的字符"\x41" → "A"
\uXXXXUnicode 字符(4位十六进制)"\u00A9" → "©"
\uXXXXXXXXUnicode 字符(8位十六进制)"\U0001F600" → "😀"

(1)换行与缩进

print("第一行\n第二行\t缩进")
# 输出:
# 第一行
# 第二行    缩进

(2)字符串中包含引号

​
# 双引号字符串内使用双引号
text1 = "他说:\"你好!\""            # 他说:"你好!"

# 单引号字符串内使用单引号
text2 = 'It\'s a pen.'               # It's a pen.

​

(3)文件路径处理

# Windows路径(需转义反斜杠)
path1 = "C:\\Users\\Alice\\file.txt"            # C:\Users\Alice\file.txt


# 使用原始字符串(推荐)
path2 = r"C:\Users\Alice\file.txt"             # C:\Users\Alice\file.txt

         在字符串前加 r 或 R,禁用转义符功能,直接显示原始内容:

(4)特殊字符编码

​
print("版权符号:\u00A9")      # 输出:版权符号:©
print("笑脸表情:\U0001F600")  # 输出:笑脸表情:😀

​

八、补充

进制转换
操作Python 方法示例
十进制 → 二进制bin(n) 或 f"{n:b}"bin(5) → 0b101
十进制 → 八进制oct(n) 或 f"{n:o}"oct(15) → 0o17
十进制 → 十六进制hex(n) 或 f"{n:x}"hex(255) → 0xff
其他进制 → 十进制int(str, base)int("FF", 16) → 255
任意进制互转先转十进制,再转目标进制——

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值