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 右对齐,总宽度n f"{6:>4}" → "   6"
: 左对齐,总宽度n f"{6:<4}" → "6   "
:^n 居中对齐,总宽度n f"{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 点赞(统计特征字符) 

你可能感兴趣的:(pythonPTA天梯赛,python,开发语言)