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

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 re

text = "订单号: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 re

input_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 点赞(统计特征字符) 

相关文章:

  • Android之图片保存相册及分享图片
  • 新型物联网电瓶车充电桩在居民区的应用优势
  • Git 常用指令及其说明
  • FutureTask 和 CompletableFuture
  • 更好用更现代的字模软件
  • 9.【线性代数】—— 线性相关性, 向量空间的基,维数
  • vue 3D 翻页效果
  • Vscode编辑器获取更新远程最新分支
  • 新民主主义革命理论的形成依据
  • AdapterBias
  • Rk3568驱动开发_驱动实现流程以及本质_3
  • P4282--高精度加减,进制
  • Debain12.9安装大模型微调基础环境
  • 数据驱动未来!天合光能与永洪科技携手开启数字化新篇章
  • 网络安全-系统层攻击流程及防御措施
  • [创业之路-323]:初创期企业谨慎多元化策略,要聚焦策略、压强策略、力出一孔、利出一孔。
  • 【ROS2】SLAM入门:gmapping建图、导航测试记录
  • Apache Flink CDC (Change Data Capture) mysql Kafka
  • 智慧家居中的视频监控系统-------1、视频监控
  • 通过恒定带宽服务器调度改进时间敏感网络(TSN)流量整形
  • 智能科技网站模板下载/百度推广怎么联系
  • 宝安高端网站建设/seo站长工具 论坛
  • 企业网站栏目设置/网上怎么发布广告
  • weui.css做网站/优化大师win10下载
  • WordPress外链自动转内链/郑州seo实战培训
  • 写作网站六大神书/独立站谷歌seo