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

python3 的字符串

Python3 字符串知识点详解

一、字符串基础

1. 创建方式

  • 单引号/双引号:等效使用,可互相嵌套特殊符号
    s1 = '允许嵌入"双引号"'
    s2 = "包含'单引号'的文本"
    
  • 三引号:支持多行字符串,保留换行和缩进格式
    s3 = '''第一行
    第二行'''
    
  • 续行符\: 将代码拆分为多行,输出为单行:
    long_str = "This is a very very very \
    long string"  # 输出为单行
    

2. 索引与切片

  • 索引规则:正向从0开始,负向从-1开始(反向计数)
    text = "Python"
    print(text[0])    # 'P' 
    print(text[-3])   # 'h' 
    
  • 切片语法[start:end:step]
    print(text[1:4])   # 'yth'(索引1-3)
    print(text[::2])    # 'Pto'(步长2)
    

3. 不可变性

  • 修改需创建新对象,原字符串不变
    s = "Hello"
    new_s = s[:4] + "p"  # 'Help'
    

二、字符串操作

1. 拼接与重复

  • 运算符+(拼接)、*(重复)
    print("Hi" * 3)  # 'HiHiHi' 
    print("A" + "B") # 'AB' 
    

2. 常用方法

方法功能说明示例
split(sep)按分隔符拆分字符串"a,b,c".split(",")['a','b','c']
join(list)合并列表为字符串"-".join(['a','b'])'a-b'
replace(old,new)替换子串"Hi".replace("i","ello")'Hello'
strip()去除首尾空白符" text ".strip()'text'
upper()/lower()全大写/全小写转换"AbC".lower()'abc'

3. 格式化方法

  • f-string(推荐):直接嵌入变量或表达式
    name = "Alice"
    print(f"Hello, {name.upper()}!")  # 'Hello, ALICE!'
    
  • 传统占位符%str.format()
    print("PI: %.2f" % 3.1415)       # 'PI: 3.14' 
    
  • 字符串格式化汇总
    在这里插入图片描述

三、高级特性

1. 编码转换

  • str ↔ bytes:使用 encode()decode()
    bytes_data = "中文".encode("utf-8")  # b'\xe4\xb8\xad\xe6\x96\x87' 
    text = bytes_data.decode("utf-8", errors="ignore")
    

2. 特殊方法

  • partition(sep):分割为三元组
    print("key:value".partition(":"))  # ('key', ':', 'value') 
    
  • translate():批量字符替换
    table = str.maketrans("aeiou", "12345")
    print("apple".translate(table))    # '1ppl2' 
    

3. 正则表达式

  • 结合 re 模块实现复杂文本匹配
    import re
    print(re.findall(r'\d+', "ID:123"))  # ['123']
    

四、字符串转义

1.核心转义字符表

Python使用反斜杠\作为转义标识符,常见转义字符及功能如下:

转义字符功能描述示例代码与输出引用来源
\\输出单个反斜杠print("C:\\Users")C:\Users
\' / \"在单/双引号字符串中输出对应引号print('I\'m OK')I'm OK
\n换行符(光标移动到下一行行首)print("A\nB") → 分两行输出
\t水平制表符(相当于4个空格)print("Hi\tPy")Hi Py
\r回车符(覆盖行首内容)print("123\rAB")AB3
\b退格符(删除前一个字符)print("hel\blo")hllo
\xhh十六进制字符编码(如\x41为’A’)print("\x41")A
\ooo八进制字符编码(如\101为’A’)print("\101")A
\uXXXXUnicode字符(如\u03A9为希腊字母Ω)print("\u03A9")Ω
\a响铃符(触发系统提示音)print("\a") → 响铃

注意:Windows系统换行符为\r\n,Linux/Mac为\n


2.原始字符串(Raw String)

在字符串前加rR前缀可禁用转义解析,常用于正则表达式和文件路径处理:

# 正则表达式场景
import re
pattern = r"\d+\t\w+"  # 保留原始反斜杠
match = re.search(pattern, "123\tAbc")

# 文件路径场景
path = r"C:\Users\data\new_folder"  # 避免多次转义

注意:原始字符串末尾不能为单反斜杠(需拼接处理):

path = r"C:\folder" + "\\"  # 正确写法

3.安全处理与实战技巧

  1. 用户输入清洗
    使用.replace()防止特殊字符注入:
user_input = input("输入内容:").replace("\\", "\\\\")  # 转义反斜杠
  1. 参数化查询
    避免SQL注入攻击:
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
user_input = "1; DROP TABLE users"
# 安全做法(使用占位符)
cursor.execute("SELECT * FROM users WHERE id=?", (user_input,))
  1. 格式化字符串转义
    在f-string中需双重转义:
name = "Alice"
print(f"路径: {name}\\data")  # 输出: Alice\data

五、实用技巧

1. 多行处理

  • textwrap.dedent():消除缩进
    from textwrap import dedent
    s = dedent('''保留自然缩进的多行文本''')
    

2. 性能优化

  • 避免 + 频繁拼接,优先使用 join()
    # 低效:生成多个临时对象
    result = ""
    for s in list_data:
        result += s
    
    # 高效:单次内存分配
    result = "".join(list_data)
    

相关文章:

  • Linux touch命令
  • STM32学习笔记之振荡器(原理篇)
  • 大模型学习笔记(Langchain实践笔记)
  • PAT乙级(1077 互评成绩计算)C语言
  • 分布式锁,redisson,redis
  • 为什么要base64编码
  • 【极速版 -- 大模型入门到进阶】大模型如何学会使用对应的工具 (第二弹)
  • PyTorch量化技术教程:第四章 PyTorch在量化交易中的应用
  • 【漏洞复现】Apache Tomcat partial PUT文件上传反序列化漏洞复现(CVE-2025-24813)
  • 【JavaScript 简明入门教程】为了Screeps服务的纯JS入门教程
  • 第12章:优化并发_《C++性能优化指南》notes
  • P1722 矩阵Ⅱ - 洛谷
  • 26考研——查找_树形查找_二叉排序树(BST)(7)
  • JavaScript 改变 HTML 内容
  • Spring JdbcTemplate 万字详解(通俗易懂)
  • 数据库——MySQL基础
  • 解决Ubuntu服务器多网口使用情况下外网老掉线问题
  • 容联云创始人孙昌勋:金融大模型应用,做出场景化应用比技术的先进更重要
  • Photoshop 2025安装教程包含下载安装包,2025最新版图文安装教程
  • 跨层封装简单介绍
  • 工人日报关注跟着演出去旅游:票根经济新模式兴起,让过路客变过夜客
  • 外卖大战之外,缝隙中的校园到寝外卖和那些送餐的大学生们
  • 热点问答丨新加坡人民行动党缘何再赢议会选举
  • 五大白酒去年净利超1500亿元:贵州茅台862亿领跑,洋河营收净利齐降
  • 思政课也精彩,“少年修齐讲堂”开讲《我的中国“芯”》
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套