Python 字符串操作

Python 字符串操作

Python 字符串操作

概述

字符串是编程中最常用的数据类型之一,特别是在文本处理、数据清洗和自然语言处理等领域。掌握字符串操作是Python编程的基础技能。

字符串操作分类

字符串操作

基本操作

常用方法

格式化

编码处理

类型转换

高级操作

索引

切片

长度

大小写转换

查找替换

分割连接

判断方法

百分号格式化

format方法

f-string

编码

解码

数字转字符串

字符串转数字

对齐填充

迭代遍历

代码示例

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" 文件名: string_operations.py 开发思路和开发过程: 1. 首先介绍字符串的基本操作(索引、切片等) 2. 然后演示字符串的常用方法 3. 接着展示字符串格式化方法 4. 最后介绍字符串与其他数据类型的转换 代码功能: 演示Python中字符串的各种操作方法,包括索引、切片、常用方法和格式化等。 """print("=== Python 字符串操作详解 ===\n")# 1. 字符串基本操作print("1. 字符串基本操作:") text ="Hello, Python World!"print(f"原始字符串: '{text}'")# 字符串索引(从0开始)print(f"第一个字符: '{text[0]}'")print(f"最后一个字符: '{text[-1]}'")# 字符串切片 [start:end:step]print(f"前5个字符: '{text[:5]}'")print(f"从第7个字符到最后: '{text[6:]}'")print(f"第7到第12个字符: '{text[6:12]}'")print(f"每隔一个字符: '{text[::2]}'")print(f"反转字符串: '{text[::-1]}'")# 字符串长度print(f"字符串长度: {len(text)}")print()# 2. 字符串常用方法print("2. 字符串常用方法:") sample_text =" Hello, Python! Welcome to the World of Python Programming. "print(f"示例字符串: '{sample_text}'")# 去除空白字符 stripped = sample_text.strip()print(f"去除首尾空白: '{stripped}'")# 大小写转换print(f"全部大写: '{stripped.upper()}'")print(f"全部小写: '{stripped.lower()}'")print(f"首字母大写: '{stripped.capitalize()}'")print(f"每个单词首字母大写: '{stripped.title()}'")# 查找和替换print(f"查找'Python'的位置: {stripped.find('Python')}")print(f"查找最后一个'Python'的位置: {stripped.rfind('Python')}")print(f"'Python'出现的次数: {stripped.count('Python')}")# 替换 replaced = stripped.replace('Python','Java')print(f"将'Python'替换为'Java': '{replaced}'")# 分割和连接 words = stripped.split()print(f"按空格分割: {words}") sentence ="Python,is,awesome" split_by_comma = sentence.split(',')print(f"按逗号分割: {split_by_comma}") joined ='-'.join(words[:4])# 连接前4个单词print(f"用'-'连接前4个单词: '{joined}'")# 判断方法print(f"是否以'Hello'开头: {stripped.startswith('Hello')}")print(f"是否以'Programming.'结尾: {stripped.endswith('Programming.')}")print(f"是否全为字母: {'Hello'.isalpha()}")print(f"是否全为数字: {'123'.isdigit()}")print(f"是否全为字母或数字: {'Hello123'.isalnum()}")print()# 3. 字符串格式化print("3. 字符串格式化:") name ="张三" age =25 city ="北京"# 1. 百分号格式化(老式方法) old_style ="姓名: %s, 年龄: %d, 城市: %s"%(name, age, city)print(f"百分号格式化: {old_style}")# 2. str.format() 方法 format_method ="姓名: {}, 年龄: {}, 城市: {}".format(name, age, city)print(f"format方法: {format_method}")# 3. f-string(推荐方法,Python 3.6+) f_string =f"姓名: {name}, 年龄: {age}, 城市: {city}"print(f"f-string: {f_string}")# 格式说明符 pi =3.141592653589793print(f"π的值(保留2位小数): {pi:.2f}")print(f"π的值(科学计数法): {pi:.2e}") number =42print(f"数字补零(5位): {number:05d}")print()# 4. 字符串编码和解码print("4. 字符串编码和解码:") chinese_text ="你好,世界!"print(f"中文字符串: {chinese_text}")# 编码为bytes encoded = chinese_text.encode('utf-8')print(f"UTF-8编码: {encoded}")# 解码为字符串 decoded = encoded.decode('utf-8')print(f"UTF-8解码: {decoded}")print()# 5. 多行字符串和转义字符print("5. 多行字符串和转义字符:")# 使用转义字符 escape_example ="第一行\n第二行\t制表符\\反斜杠"print("转义字符示例:")print(escape_example)# 使用原始字符串(忽略转义字符) raw_string =r"C:\Users\张三\Documents"print(f"原始字符串: {raw_string}")# 多行字符串 multi_line =""" 这是多行字符串的第一行 这是第二行 这是第三行 """print("多行字符串:")print(multi_line)print()# 6. 字符串与其他数据类型的转换print("6. 字符串与其他数据类型的转换:")# 数字转字符串 num =123.456 num_str =str(num)print(f"数字 {num} 转字符串: '{num_str}'")# 字符串转数字 str_int ="123" str_float ="45.67" converted_int =int(str_int) converted_float =float(str_float)print(f"字符串 '{str_int}' 转整数: {converted_int}")print(f"字符串 '{str_float}' 转浮点数: {converted_float}")# 列表转字符串 my_list =['apple','banana','orange'] list_str =','.join(my_list)print(f"列表 {my_list} 转字符串: '{list_str}'")# 字符串转列表 str_to_list = list_str.split(',')print(f"字符串 '{list_str}' 转列表: {str_to_list}")print()# 7. 字符串的高级操作print("7. 字符串的高级操作:")# 字符串对齐 text ="Python"print(f"居中对齐(20字符): '{text.center(20)}'")print(f"左对齐(20字符): '{text.ljust(20)}'")print(f"右对齐(20字符): '{text.rjust(20)}'")print(f"用*填充: '{text.center(20,'*')}'")# 字符串填充 number ="42"print(f"左侧补零(5位): '{number.zfill(5)}'")# 字符串检查 email ="[email protected]"print(f"邮箱格式检查 '{email}': {'@'in email and'.'in email}")# 字符串迭代 word ="Python"print(f"遍历字符串 '{word}':")for i, char inenumerate(word):print(f" 索引 {i}: '{char}'")print("\n=== 字符串操作详解结束 ===")

字符串处理流程

原始字符串

需要清洗?

去除空白strip

直接处理

需要格式化?

格式化处理

进一步处理

需要分割?

split分割

其他操作

处理分割结果

最终结果

字符串格式化对比

格式化方法语法示例优点缺点
% 格式化"Hello %s" % name兼容性好,适用于旧版本Python不直观,容易出错
format方法"Hello {}".format(name)功能强大,支持位置和命名参数语法稍复杂
f-stringf"Hello {name}"直观易读,性能好需要 Python 3.6+ 版本

学习要点

  1. 掌握基本操作:索引、切片、长度计算
  2. 熟练使用常用方法:大小写转换、查找替换、分割连接等
  3. 理解格式化方法:特别是推荐使用的f-string
  4. 处理编码问题:正确处理中文等非ASCII字符
  5. 掌握类型转换:字符串与其他数据类型的相互转换

实践建议

  1. 运行示例代码,观察各种字符串操作的输出结果
  2. 尝试修改字符串内容,观察结果变化
  3. 练习复杂的字符串处理场景
  4. 在实际项目中应用学到的字符串操作技巧

Read more

哈希的介绍

哈希的介绍

1. unordered系列关联式容器     下面来看哈希,首先看关联式容器unorder_map和unorder_set,它们底层是哈希表,用法和map set一样。下面浅浅过一下,它是单向迭代器,因为没有rbegin和rend。也就是红黑树和哈希表实现的map和set用法几乎相同,区别是:1.unorder系列是单向迭代器。2.unorder系列遍历出来不是有序的。下面演示一下: 它只能去重,不能排序,它也是有multi版本的。再演示一下unorder_map: 2.哈希     下面正式看哈希,什么是哈希呢?我们以前遇到的搜索有这样几类:首先是暴力查找,在一个数组里都查,这样非常慢。于是有人衍生出了有序数组的二分查找,但它的前提是排序,而且增删查改不方便,过程中为了保证有序会涉及大量的数据挪动。因此衍生出了平衡搜索树,此时基础上又出现了新的搜索,这种搜索叫哈希(散列)。它的本质是存储的值跟存储位置建立出一个映射关系,什么意思呢,先来看一个计数排序的样例: 有上面这样的一组值,最小的值是15,最大的值是30,总共开了16个空间。然后存映射关系(次数),15映射第一个位

By Ne0inhk
解析得物商品详情:API 接口调用实践与数据结构分析

解析得物商品详情:API 接口调用实践与数据结构分析

得物平台(原毒APP)作为国内领先的潮流电商平台,其商品数据具有很高的价值。对于开发者而言,了解如何通过其提供的 API 接口获取商品详情信息,是进行数据分析、比价工具开发、库存监控等应用的基础。本文将聚焦于得物平台的商品详情 API 接口,探讨其调用方式、核心参数及返回的数据结构。 1. 接口概览与请求方式 * 接口功能:获取指定商品的详细信息,包括基础信息(名称、品牌、分类)、价格、库存状态、规格参数、图片、描述等。 * 请求方式:通常为 HTTP GET 请求。 * 接口地址:一般为平台API服务域名下的特定路径,例如 https://api.dewu.com/product/detail (实际地址需以官方文档为准)。 * 认证:部分接口可能需要 API Key、Access Token

By Ne0inhk
【设计模式】策略模式:可插拔算法,从硬编码到灵活适配,体会“算法解耦“思想

【设计模式】策略模式:可插拔算法,从硬编码到灵活适配,体会“算法解耦“思想

半桔:个人主页  🔥 个人专栏: 《设计模式》《手撕面试算法》《C++从入门到入土》 🔖恐惧囚禁人的灵魂,希望可以让你自由。《肖申克的救赎》 文章目录 * 一. 光头强转行 * 1.1 团结屯的故事 * 1.2 新工作,新需求 * 二. 光头强的OO天赋 * 三. 李老板的新需求 * 3.1 出大问题了 * 3.2 继承可能不是答案 * 四. 最终方案 * 五. 总结 一. 光头强转行 1.1 团结屯的故事 我是光头强。以前,我每天的生活就是被两头臭狗熊按在地上摩擦,不仅树砍不到,还要承受李老板的夺命连环Call和扣工资威胁。 直到有一天,我捡到了一本《C++ Primer》(虽然我也忘了森林里为啥会有这书)。那一刻,

By Ne0inhk
【超详细】DEIM:最强实时目标检测算法-Visdrone2019无人机数据集实战

【超详细】DEIM:最强实时目标检测算法-Visdrone2019无人机数据集实战

主要内容如下: 一、论文解析 二、基于DEIM-D-FINE-S训练Visdrone2019无人机数据集 1、Visdrone2019数据集介绍 2、模型训练、验证及测试 3、onnx导出与测试 4、与YOLOv8\11进行结果对比 服务器:NVIDIA RTX4090 24G 运行环境:Python=3.8(要求>=3.8),torch2.3.1+cu121(要求>=2.0.1) Visdrone2019-COCO格式数据集百度AI stduio下载链接:https://aistudio.baidu.com/datasetdetail/226107/0 Visdrone-YOLO格式数据集下载链接:https://aistudio.baidu.com/

By Ne0inhk