Python天梯赛系统备考-字符串篇

知识点拆解
  

1. 切片技巧

定义

通过 [start:end:step] 语法截取字符串的子序列

  • start:起始索引(包含,默认0)

  • end:结束索引(不包含,默认末尾)

  • step:步长(可为负数实现逆序)

字诀:包左不包右

核心用途
  • 快速逆序字符串

  • 提取特定区间的子串

  • 间隔取字符

示例代码
#输入一个字符串s
s = "Hello,天梯赛!"# 基本切片
print(s[0:5])    # 输出 "Hello" (索引0-4)
print(s[7:10])   # 输出 "天梯赛"# 逆序技巧
print(s[::-1])   # 输出 "!赛梯天,olleH"
print(s[5:2:-1]) # 输出 ",ol" (从索引5到3逆序)# 步长应用
print(s[::2])    # 输出 "Hlo天赛" (每隔1个字符取)
注意事项
  • 索引越界时自动取有效范围(如s[0:100]等效s[0:])

  • 原字符串不可变,切片会生成新字符串


2. 格式化输出

定义

使用 f-string 或 format() 方法控制字符串的显示格式

常用格式符
格式符号功能说明示例
:>n右对齐,总宽度nf"{6:>4}" → "   6"
:<n左对齐,总宽度nf"{6:<4}" → "6   "
:^n居中对齐,总宽度nf"{6:^4}" → " 6  "
:0>n右侧补零到n位f"{6:0>4}" → "0006"
:.2f保留两位小数f"{3.1415:.2f}" → "3.14"
:x十六进制格式f"{255:x }" → "ff"
print(f"{6:>4}")
print(f"{6:<4}")
print(f"{6:^4}")
print(f"{6:0>4}")
print(f"{6:0<4}")
print(f"{6:0^4}")
#答案输出示例已在上面表格中给出
场景应用
  • 按要求补前导零(如输出时间格式)

  • 对齐表格数据

  • 控制浮点数精度

示例代码
# 成绩格式化输出
name, score = "张三", 95.5
print(f"{name:<5}的成绩:{score:0>5.1f}分") 
# 输出 "张三   的成绩:095.5分"# 日期补零
month, day = 3, 8
print(f"日期:{month:0>2d}-{day:0>2d}") 
# 输出 "日期:03-08"

3. 正则表达式

定义

通过特定模式匹配文本的工具,Python中通过 re 模块实现。

re.findall()提取数字/字母  匹配模式 r'\d+'(整数) / r'-?\d+'(含负数)
常用元字符
模式含义示例
\d匹配数字等价于[0-9]
\w匹配字母/数字/下划线等价于[a-zA-Z0-9_]
\s匹配空白字符包含空格、换行等
.匹配任意字符(除换行)
*匹配前字符0次或多次
+匹配前字符1次或多次
?匹配前字符0或1次
典型应用场景
  • 从复杂文本中提取数字/字母

  • 验证输入格式(如邮箱、电话号码)

  • 替换特定模式的文本

示例代码
import retext = "订单号:AB123,金额:-45.6元,数量:2"# findall提取所有整数(含负数)
nums = re.findall(r"-?\d+", text) 
print(nums)  # 输出 ['123', '-45', '6', '2']# 分割混合字符
parts = re.split(r"(\d+)", "A12B34C") 
print(parts)  # 输出 ['A', '12', 'B', '34', 'C']# 替换非数字字符
clean_str = re.sub(r"[^\d]", "", "Tel: 0571-8888-6666")
print(clean_str)  # 输出 "057188886666"

 正则表达式在密码强度评估器的设计中有反复使用过,他的公式套用相对比较晦涩,例如\d表示数字,+表示一个或多个,-?处理可能出现的负号等等,比较细碎可以学一个用一个,初学者以尽量知道在干什么为主。


4. 字符串转换

核心方法
方法功能说明时间复杂度
.split()按分隔符分割为列表O(n)
.join()合并可迭代对象为字符串O(n)
.replace()替换子串O(n)
.upper()转大写O(n)
.strip()去除首尾空白O(n)
应用场景对比
场景推荐方法
按空格分割单词s.split() (无参数自动处理)
处理含多种分隔符re.split()
合并路径"/".join(path_parts)
批量替换多个不同字符.translate()
示例代码
# 分割与合并
s = "2023-08-15"
parts = s.split("-")  # ['2023', '08', '15']
new_s = "/".join(parts)  # "2023/08/15"# 多重替换
s = "Hello World"
s = s.replace("H", "J").replace("W", "")  # "Jello orld"# 快速清洗数据
dirty_str = "  Price: $123.45\n"
clean_str = dirty_str.strip().replace("$", "").upper()
# 结果:"PRICE: 123.45"

综合应用示例

题目:处理用户输入的复杂字符串,提取所有整数并求和

import reinput_str = "数据:A1销售额5000元,B2销量-300件,成本-1200.5"
numbers = list(map(int, re.findall(r"-?\d+", input_str)))
total = sum(numbers)  # 5000 + (-300) + (-1200) = 3800
print(f"合计:{total}") 

对应练习题

  L1-011 A-B(字符串删除操作) 
  L1-026 I Love GPLT(固定格式输出) 
  L1-034 点赞(统计特征字符) 

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

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

相关文章

国标28181协议在智联视频超融合平台中的接入方法

一. 国标28181介绍 国标 28181 协议全称是《安全防范视频监控联网系统信息传输、交换、控制技术要求》&#xff0c;是国内视频行业最重要的国家标准&#xff0c;目前有三个版本&#xff1a; 2011 年&#xff1a;推出 GB/T 28181-2011 版本&#xff0c;为安防行业的前端设备、平…

深入探究 C 语言内存函数:memcpy、memmove、memset 和 memcmp

一&#xff0c;常见的内存函数 在 C 语言的编程世界里&#xff0c;对内存的高效操作至关重要。C 标准库为我们提供了一系列强大的内存操作函数&#xff0c;其中 memcpy、memmove、memset 和 memcmp 这四个函数是处理内存数据的得力助手。接下来&#xff0c;让我们深入了解它们…

Java 集合

Java 集合 在 Java 编程中&#xff0c;集合框架&#xff08;java.util 包&#xff09;是处理一组对象的强大工具。与数组不同&#xff0c;集合提供了更灵活的数据存储和操作方式。本文将详细介绍 Java 集合框架的核心接口、常用实现类及其应用场景&#xff0c;帮助你更好地理解…

go基本语法

跟Java比较学习。 hello word 示例代码 test1.go文件&#xff1a; // 包路径 package main// 导入模块&#xff0c;下面两种都行 import ("fmt" ) import "log"// main方法 func main() {log.Print("hello word !!!")fmt.Print("hello …

【Docker】如何在Linux、Windows、MacOS中安装Docker

Linux安装Docker 在终端中执行一键安装脚本命令安装docker sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker镜像源 在终端执行 一行命令&#xff0c;编辑配置文件 sudo …

2.24力扣-回溯电话号码的字母组合

17. 电话号码的字母组合 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<String> ans new LinkedList<>();StringBuilder temp new StringBuilder();public List<String> letterCombinations(String digits) {if(digitsnull || digits.leng…

Cocos Creator Shader入门实战(一):材质和Effect的了解

引擎版本&#xff1a;3.8.5 环境&#xff1a; Windows 简介 在Cocos Creator中&#xff0c;游戏炫彩缤纷的效果是借助着色器(Shader)来实现的。 Cocos主要基于OpenGL ES&#xff0c;而Shader的编写则是在可编程渲染管线中基于修改&#xff1a;顶点着色器(Vertex) 和 片段着色…

akka现有的分布式定时任务框架总结

根据你的需求&#xff0c;以下是一些基于 Akka 实现的分布式定时任务框架&#xff0c;以及相关的 GitHub 项目推荐&#xff1a; 1. Openjob Openjob 是一个基于 Akka 架构的新一代分布式任务调度框架&#xff0c;支持多种定时任务、延时任务、工作流设计&#xff0c;采用无中…

微信小程序地图map全方位解析

微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具&#xff0c;可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点&#xff1a; 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…

Python的PyTorch+CNN深度学习技术在人脸识别项目中的应用

人脸识别技术是一种基于人脸特征进行身份识别的生物识别技术&#xff0c;其核心原理包括人脸检测、人脸对齐、特征提取、特征匹配、身份识别。 一、应用场景 安防&#xff1a;门禁、监控。 金融&#xff1a;刷脸支付、身份验证。 社交&#xff1a;自动标注、美颜。 医疗&am…

《数据库索引设计与优化》译本错误纠正(1)

今天在学习《数据库索引设计与优化》第十一章第198页的时候遇到一个问题&#xff0c;即参数的文字描述与实际不符。我看的是从网络上找到的译本&#xff0c;许多喜欢白嫖的朋友可能也会像我一样遇到这种问题。 可以看到&#xff0c;上面对参数Z的描述是&#xff1a;Z上一次索引…

API测试工具:Swagger vs Postman 2025最新全面对比

随着微服务架构的普及和云原生应用的激增&#xff0c;高效的 API 开发、测试和文档管理工具变得越来越重要。在众多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解决着 API 开发生命周期中的关键问题&#xff0c;本文将从多个维度深入对比这两款工具&#xff0…

如何查询SQL Server数据库服务器的IP地址

如何查询SQL Server数据库服务器的IP地址 作为数据库管理员或开发人员&#xff0c;了解如何查询SQL Server数据库服务器的IP地址是一项重要技能。本文将介绍几种简单而有效的方法&#xff0c;帮助你轻松获取这一信息。无论你是新手还是经验丰富的专业人士&#xff0c;这些方法…

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法&#xff1a; 一、先确认版本 openssl version 二、安…

AI人工智能之机器学习sklearn-数据预处理和划分数据集

1、概要 本篇学习AI人工智能之机器学习sklearn数据预处理和划分数据集&#xff0c;从代码层面讲述如何进行数据的预处理和数据集划分。 2、简介 本片讲述数据预处理的标准化处理、归一化处理&#xff0c;以常用的两个类为例 标准化处理类 StandardScaler归一化处理类 MinMax…

智能硬件-01智能停车场

行业背景 随着现代人们生活水平的提高&#xff0c;私家车辆在不断增加&#xff0c;小区将面临着临时车用户要多于固定车用户的窘境&#xff0c;尤其是在早晚高峰时段车辆出入拥堵&#xff0c;对小区的车辆管理难度越来越大&#xff0c;对停车场收费员的岗位要求越来越高&#…

定长内存池的实现、测试及错误分析

背景 C/C 申请内存使用的是 malloc &#xff0c;malloc 其实就是一个大众货&#xff0c;什么场景下都可以用&#xff0c;但是什么场景下都可以用就意味着什么场景下都不会有很高的性能。 定长内存池解决固定大小的内存申请释放需求&#xff0c; 性能达到极致&#xff0c;不考…

vue3 下载文件 responseType-blob 或者 a标签

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 来下载文件&#xff0c;并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例&#xff1a; 使用 axios 下载文件 首先&#xff0c;确保你已经安装了 axios&#xff1a; npm install axios然后在你…

Search API:让数据获取变得简单高效的搜索引擎代理商

Search API&#xff1a;让数据获取变得简单高效的搜索引擎代理商 在当今数字化时代&#xff0c;数据驱动的决策变得越来越重要&#xff0c;而获取精准、实时的数据是众多企业、研究机构和开发者的核心需求。然而&#xff0c;直接爬取搜索引擎或行业资讯网站可能会遇到诸多挑战&…

halcon三维对象处理例程总结(二)

目录 一、intersect_plane_object_model_3d二、interactive_intersection三、measure_plant四、moments_object_model_3d五、projective_trans_object_model_3d六、read_object_model_3d_generic_ascii一、intersect_plane_object_model_3d 计算三维物体模型与平面之间的相交部…