【100天精通python】Day22:字符串常用操作大全

2023-11-01

目录

 专栏导读 

 一、 字符串常用操作

1 拼接字符串

2 计算字符串长度

3 截取字符串

4 分割合并字符串

5 检索字符串

6 字母的大小写转换

7 去除字符串的空格和特殊字符

8 格式化字符串

 二 、字符串编码转换

2.1 使用encode()方法编码

2.2 使用decoder()方法编码


 专栏导读 

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html


 一、 字符串常用操作

1 拼接字符串

使用 “ +”运算符将多个字符串拼接在一起。

示例:

string1 = "Hello"
string2 = "World"
result = string1 + " " + string2
print(result)  # Output: "Hello World"

2 计算字符串长度

可以使用len()函数来计算字符串的长度,即其中字符的个数。

string = "Hello, Python!"
length = len(string)
print(length)  # Output: 15

3 截取字符串

使用切片操作截取字符串的一部分。

string = "Hello, Python!"
substring = string[0:5]
print(substring)  # Output: "Hello"

4 分割合并字符串

使用split()方法可以将一个字符串按照指定的分隔符分割成多个部分。使用join()方法可以将多个字符串合并成一个。

string = "apple,orange,banana"
fruits_list = string.split(",")
print(fruits_list)  # Output: ['apple', 'orange', 'banana']

fruits = "-".join(fruits_list)
print(fruits)  # Output: "apple-orange-banana"

5 检索字符串

使用find()方法或index()方法来检索子字符串在原字符串中的位置。

find()方法会返回第一次出现的位置,如果没有找到则返回-1;而index()方法会在找不到子字符串时抛出异常。

string = "Hello, Python!"
position1 = string.find("Python")
print(position1)  # Output: 7

position2 = string.index("World")  # Raises ValueError: substring not found

6 字母的大小写转换

 Python中有几个方法可以实现字母的大小写转换。upper()方法将所有字母转换为大写,lower()方法将所有字母转换为小写,capitalize()方法将首字母转换为大写。

string = "Hello, Python!"
upper_string = string.upper()
lower_string = string.lower()
capitalized_string = string.capitalize()

print(upper_string)  # Output: "HELLO, PYTHON!"
print(lower_string)  # Output: "hello, python!"
print(capitalized_string)  # Output: "Hello, python!"

7 去除字符串的空格和特殊字符

        可以使用strip()方法去除字符串两端的空格(包括换行符等空白字符)。

        如果想去除指定字符,可以使用strip()方法的参数指定要去除的字符。

string = "   Hello, Python!   "
trimmed_string = string.strip()
print(trimmed_string)  # Output: "Hello, Python!"

string_with_special_chars = "!@#$Hello, Python!%^&*"
cleaned_string = string_with_special_chars.strip("!@#$%^&*") #去除指定字符
print(cleaned_string)  # Output: "Hello, Python!"

8 格式化字符串

        在Python中,你可以使用多种方式来格式化字符串。其中一种常用的方式是使用format()方法,它允许将变量的值插入到字符串中的占位符位置。

name = "Alice"
age = 30

# 使用位置参数插入
formatted_string1 = "My name is {} and I am {} years old.".format(name, age)

# 使用关键字参数插入
formatted_string2 = "My name is {n} and I am {a} years old.".format(n=name, a=age)

print(formatted_string1)  # Output: "My name is Alice and I am 30 years old."
print(formatted_string2)  # Output: "My name is Alice and I am 30 years old."

此外,还有一种更简洁的方式是使用f-string(格式化字符串字面值)。

示例:

name = "Alice"
age = 30

# 使用f-string
formatted_string = f"My name is {name} and I am {age} years old."

print(formatted_string)  # Output: "My name is Alice and I am 30 years old."

 二 、字符串编码转换

        在Python中,字符串编码转换涉及将字符串从一种字符编码格式转换为另一种字符编码格式。常见的字符编码格式包括UTF-8、ASCII、ISO-8859-1等。

2.1 使用encode()方法编码

        在Python中,字符串对象有一个encode()方法,可以将字符串转换为指定的字符编码格式。该方法返回一个字节对象(bytes类型)。

original_string = "Hello, 你好!"

# 将字符串编码为UTF-8格式
encoded_bytes = original_string.encode('utf-8')
print(encoded_bytes)  # Output: b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'

# 将字符串编码为ASCII格式
encoded_bytes_ascii = original_string.encode('ascii', errors='ignore')
print(encoded_bytes_ascii)  # Output: b'Hello, !'

2.2 使用decoder()方法编码

        对于已经编码为字节对象(bytes类型)的字符串,我们可以使用decode()方法将其解码为指定的字符编码格式。

encoded_bytes = b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'

# 将字节对象解码为UTF-8格式
decoded_string = encoded_bytes.decode('utf-8')
print(decoded_string)  # Output: "Hello, 你好!"

# 将字节对象解码为ASCII格式
decoded_string_ascii = encoded_bytes.decode('ascii', errors='ignore')
print(decoded_string_ascii)  # Output: "Hello, !"

         需要注意的是,在进行编码和解码时,要确保目标编码格式能够表示原始字符串中的所有字符,否则会出现异常。

        在使用encode()decode()方法时,可以指定一个errors参数来处理编码和解码过程中的错误。常见的errors参数值有:

  • 'strict'(默认值):如果出现非法字符,抛出UnicodeEncodeError(编码)或UnicodeDecodeError(解码)异常。
  • 'ignore':忽略非法字符,直接忽略它们。
  • 'replace':用Unicode Replacement Character(U+FFFD)替代非法字符。
  • 'xmlcharrefreplace':用XML字符引用替代非法字符。

要确保正确地处理不同编码之间的转换,需要了解原始字符串的编码格式以及目标编码格式,并根据需要选择合适的转换方式。通常情况下,推荐使用UTF-8编码,因为它能够表示几乎所有的字符,而且在多平台和多语言环境中广泛使用。


下一篇介绍正则表达式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【100天精通python】Day22:字符串常用操作大全 的相关文章

  • 通过Python通过蓝牙发送消息或数据

    如何通过 python 通过蓝牙发送消息 而无需输入数字等密钥身份验证 我用过 pybluez 但我收到了这个错误 File send line 12 in
  • 如何组合 3 个或更多 CompletionStages?

    如果有 2 个 CompletionStages 我可以将它们与thenCombine method CompletionStage a aCompletionStage getA CompletionStage b bCompletion
  • Jupyter 笔记本中未显示绘图

    我正在尝试为 Anscombe 数据集创建 2x2 图 加载数据集并分离数据集中的每个类 import seaborn as sns import matplotlib pyplot as plt anscombe sns load dat
  • Java MYSQL/JDBC 查询从缓存的连接返回过时的数据

    我一直在 Stackoverflow 中寻找答案 但似乎找不到不涉及 Hibernate 或其他数据库包装器的答案 我直接通过 Tomcat 6 Java EE 应用程序中的 MYSQL 5 18 JDBC 驱动程序使用 JDBC 我正在缓
  • 在 Python 中快速确定小于 10 亿的数字是否为素数

    我目前在 python 中检查数字素数的算法对于 1000 万到 10 亿之间的数字来说速度很慢 我希望它能够得到改进 因为我知道我永远不会得到超过 10 亿的数字 背景是我无法获得足够快的实现来解决项目 Euler 的问题 60 我在 7
  • 覆盖Java中的属性[重复]

    这个问题在这里已经有答案了 在 Java 中 我最近有几个项目 我使用了这样的设计模式 public abstract class A public abstract int getProperty public class B exten
  • Unpivot Pandas 数据

    我目前有一个DataFrame布置为 Jan Feb Mar Apr 2001 1 12 12 19 2002 9 2003 我想将数据 逆透视 使其看起来像 Date Value Jan 2001 1 Feb 2001 1 Mar 200
  • 图标和导航视图之间的左边距

    我必须在图标和图标之间添加左边距NavigationView 如下图中箭头所示 我知道根据谷歌规范 这个边距必须有16dp但我需要改变它 我努力了
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • 使用 MinGW 链接到 Python

    我不想创建一个嵌入Python解释器的跨平台程序 并用MinGW编译它 但是 Python 二进制发行版没有提供 MinGW 链接的库 仅python32 lib对于 Visual C 并且 Python 源包不提供使用 MinGW 编译的
  • 如何检索 SQLAlchemy 结果集的 python 列表? [复制]

    这个问题在这里已经有答案了 我有以下查询来检索单列数据 routes query select schema stop times c route number schema stop times c stop id stop id dis
  • 如何获取DataFrame.pct_change来计算每日价格数据的每月变化?

    我知道可以用periods争论 但是如何将分布在一个月内 例如交易日 的每日价格数据进行回报化呢 示例数据是 In 1 df AAPL 2009 01 02 16 00 00 90 36 2009 01 05 16 00 00 94 18
  • Java 9:AES-GCM 性能

    我进行了一个简单的测试来测量AES GCM https en wikipedia org wiki Galois Counter Mode表现在Java 9 通过在循环中加密字节缓冲区 结果有些令人困惑 本机 硬件 加速似乎有效 但并非总是
  • ValueError:对于optimize.curve_fit中所需的数组来说对象太深

    我正在尝试拟合化学系统中四个变量 A B C D 的人口增长和衰退的动力学模型 我正在尝试求解以下一组方程 我已将其以矩阵形式附加 方程的矩阵形式 https i stack imgur com ysEdZ png 其中 t 是时间步长 k
  • Java 执行器和长寿命线程

    我继承了一些使用 Executors newFixedThreadPool 4 的代码运行 4 个长寿命线程来完成应用程序的所有工作 这是推荐的吗 我读过Java 并发实践 https rads stackoverflow com amzn
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列
  • 为什么 OOP 中静态类的最佳实践有所不同?

    我目前正在阅读有关 Java 最佳实践的内容 我发现根据这本书 https rads stackoverflow com amzn click com 0321356683我们必须优先选择静态类而不是非静态类 我记得在 C 最佳实践中 我们
  • “mvn”不被识别为内部或外部命令、可操作程序或批处理文件

    可能是之前问过问题 但我发现了非常奇怪的错误 当我跑步时mvn versionbin 中的命令给出了版本和其他信息 但是 当我跑到垃圾箱外面时 它会出现异常 下面提到的结果 C Program Files apache maven 3 0
  • Python中矩阵元素的双重求和

    基于下面的简化示例 我想在我的代码中 from sympy import import numpy as np init printing x y symbols x y mat Matrix x 1 1 y X 1 2 3 Y 10 20
  • 为什么我们不能在函数式接口中重载抽象方法? (爪哇)

    所以我熟悉java中的函数式接口 以及它们与lambda表达式的使用 一个函数式接口只能包含一个抽象方法 当从 lambda 表达式使用这一孤独方法时 您不需要指定其名称 因为接口中只有一个抽象方法 编译器知道这就是您正在引用的方法 Exa

随机推荐

  • ipad连接电脑_躺在被窝玩电脑,利用ipone ipad远程控制局域网电脑

    时光荏苒 人生的旅途来到了2019年 小科祝愿大家在新的一年里 猪 事顺利 和和美美 冬天 一年中最寒冷的季节 作为一个南方人 对于寒冷是唯恐而不及了 既没有暖气 一天开着空调又太耗电 所以能在床上解决的事情就坚决不下床 今天小科来教大家如
  • python 声音合成,使用python进行声音生成/合成?

    Is it possible to get python to generate a simple sound like a sine wave Is there a module available for this If not how
  • 机械革命蛟龙16ubuntu双系统的移除与重装

    介绍一下本人重装的一个初衷 首先系统更新内核导致cuda无法运行 其次原本的70g空间捉襟见肘 因此想要重装分配更多一些空间 若没有扩容的需求可以去找找系统自带的重装方法 应该会比我下面的流程快很多 1 预备工作 1 1 查看电脑的引导方式
  • 怎么理解分布式、高并发、多线程?(含面试题和答案解析)

    看到分布式 高并发 多线程这三个词的时候 很多人是不是都认为分布式 高并发 多线程 当面试官问到高并发系统可以采用哪些手段来解决 或者被问到分布式系统如何解决一致性的问题 是不是一脸懵逼 确实 在一开始接触的时候 不少人都会分布式 高并发
  • 基于深度学习的道路交通标志数字识别

    基于MATLAB深度学习的交通标志识别 课题介绍 交通标志识别技术的研究最早开始于奔驰等14家大型汽车公 司组成的民间组织所资助的Prometheus Program for European Traffic with Highest Ef
  • 解决mac command 找不到mysql命令

    root DB 02 mysql u root bash mysql command not found 原因 这是由于系统默认会查找 usr bin下的命令 如果这个命令不在这个目录下 当然会找不到命令 我们需要做的就是映射一个链接到 u
  • js手写MVC模式

    效果图如下 代码如下 div class dataInputArea div span 请输入个 span div div
  • BugkuCTF-Web 前八题

    web2 打开题目发现全是越来越快的滑稽笑脸 并没有很明显的提示 所以打开F12看源码 用快捷键ctrl F来搜索Flag 在源码中轻松找到Flag 计算器 打开题目发现要求求两个二位数之和且和必然为三位数 但结果输出框只能输出一位数字 这
  • XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南 附Python代码 原文地址 Complete Guide to Parameter Tuning in XGBoost with codes in Python 译注 文内提供的代码和运行结果有一定差异 可
  • 什么是HTTP协议和HTTPS协议,以及两者的区别

    HTTP协议 超文本传输协议 Hyper Text Transfer Protocol 是一个简单的请求 响应协议 它通常运行在TCP之上 它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应 请求和响应消息的头以形式给出 而消息
  • STM32 Flash详解

    本文将根据ST官方Flashprogramming manual 文档编号 PM0059 讲解STM32F207内部Flash编程 01 概述 这里的flash是指STM32F207内部集成的Flash Flash存储器有以下特点 最大1M
  • opencv入门Vec3f

    Vec3f表示的是3通道float类型的 Vect 就相当于3通道float类型的图像 这是其中一个具体化 解释可以从源代码中看出来 下面给出一个具体的例子 Vec3f point Vec3f 10 10 3 2 Float 3 compo
  • Fiddler+夜神模拟器对安卓app进行抓包,安卓9,安装Magisk和LSPosed

    效果图 安装教程 1 下载夜神模拟器 国际版 2 下载Fiddler 1 配置fiddler允许监听到https Tools gt Options gt HTTPS 2 配置fiddler允许远程连接 Tools gt Options gt
  • 超级好用的思维导图软件XMind

    超级好用的思维导图软件XMind 今天和大家分享一款我一直使用的思维导图制作软件XMind 关于 思维导图制作的软件和网站是非常非常多的 可以说上网一搜的话一大把 我推荐这款 XMind是我自己搜集整理各种信息以及自己的实际使用后感觉特别喜
  • PyCharm配置anaconda环境

    PyCharm配置anaconda环境 PyCharm是一款很好用很流行的python编辑器 Anaconda是专注于数据分析的Python发行版本 包含了conda Python等190多个科学包及其依赖项 Anaconda通过管理工具包
  • coherence

    coherence Coherence是 Oracle为了建立一种高可靠和高扩展 集群计算的一个关键部件 集群指的是多于一个应用服务器参与到运算里 Coherence的主要用途是共享一个应用的对象 主要是java对象 比如Web应用的一个会
  • MAC电脑出现 .bin/webpack-dev-server permission denied 错误解决方法

    以前同事 新买的mac电脑 拉取项目后 npm i 安装了所有依赖 但是执行npm run dev 报错 MAC电脑出现 bin webpack dev server permission denied 提示权限问题 这样解决 sudo n
  • DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍

    目录 1 概述 2 简洁高效且经济的 ChatGPT 训练与推理体验 使用 DeepSpeed Chat 的 RLHF 示例轻松训练你的第一个 类ChatGPT 模型 想尝试不同的模型大小和配置 轻松实现 利用 DeepSpeed Chat
  • 静态代码检查工具 - SourceInsight_Scan 使用指南

    静态代码检查工具 SourceInsight Scan 使用指南 静态代码检查是软件开发过程中非常重要的一环 它可以帮助开发人员发现潜在的代码问题 提高代码质量和可维护性 本文将介绍一款名为SourceInsight Scan的静态代码检查
  • 【100天精通python】Day22:字符串常用操作大全

    目录 专栏导读 一 字符串常用操作 1 拼接字符串 2 计算字符串长度 3 截取字符串 4 分割合并字符串 5 检索字符串 6 字母的大小写转换 7 去除字符串的空格和特殊字符 8 格式化字符串 二 字符串编码转换 2 1 使用encode