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

打印 上一主题 下一主题

主题 1033|帖子 1033|积分 3099

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
知识点拆解
  


1. 切片技巧

定义

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


  • start:起始索引(包含,默认0)
  • end:竣事索引(不包含,默认末尾)
  • step:步长(可为负数实现逆序)
字诀:包左不包右
焦点用途



  • 快速逆序字符串
  • 提取特定区间的子串
  • 隔断取字符
示例代码

  1. #输入一个字符串s
  2. s = "Hello,天梯赛!"
  3. # 基本切片
  4. print(s[0:5])    # 输出 "Hello" (索引0-4)
  5. print(s[7:10])   # 输出 "天梯赛"
  6. # 逆序技巧
  7. print(s[::-1])   # 输出 "!赛梯天,olleH"
  8. print(s[5:2:-1]) # 输出 ",ol" (从索引5到3逆序)
  9. # 步长应用
  10. 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"
  1. print(f"{6:>4}")
  2. print(f"{6:<4}")
  3. print(f"{6:^4}")
  4. print(f"{6:0>4}")
  5. print(f"{6:0<4}")
  6. print(f"{6:0^4}")
  7. #答案输出示例已在上面表格中给出
复制代码
场景应用



  • 按要求补前导零(如输出时间格式)
  • 对齐表格数据
  • 控制浮点数精度
示例代码

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

3. 正则表达式

定义

通过特定模式匹配文本的工具,Python中通过 re 模块实现。
  
  1. re.findall()提取数字/字母  
  2.      匹配模式 r'\d+'(整数) / r'-?\d+'(含负数)
复制代码
常用元字符

模式含义示例\d匹配数字等价于[0-9]\w匹配字母/数字/下划线等价于[a-zA-Z0-9_]\s匹配空缺字符包含空格、换行等.匹配恣意字符(除换行)*匹配前字符0次或多次+匹配前字符1次或多次?匹配前字符0或1次 范例应用场景



  • 从复杂文本中提取数字/字母
  • 验证输入格式(如邮箱、电话号码)
  • 替换特定模式的文本
示例代码

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

  1. # 分割与合并
  2. s = "2023-08-15"
  3. parts = s.split("-")  # ['2023', '08', '15']
  4. new_s = "/".join(parts)  # "2023/08/15"
  5. # 多重替换
  6. s = "Hello World"
  7. s = s.replace("H", "J").replace("W", "")  # "Jello orld"
  8. # 快速清洗数据
  9. dirty_str = "  Price: $123.45\n"
  10. clean_str = dirty_str.strip().replace("$", "").upper()
  11. # 结果:"PRICE: 123.45"
复制代码

综合应用示例

题目:处理用户输入的复杂字符串,提取所有整数并求和
  1. import re
  2. input_str = "数据:A1销售额5000元,B2销量-300件,成本-1200.5"
  3. numbers = list(map(int, re.findall(r"-?\d+", input_str)))
  4. total = sum(numbers)  # 5000 + (-300) + (-1200) = 3800
  5. print(f"合计:{total}")
复制代码
对应训练题

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表