Python 中的字符串分割函数 split() 详解

070697e65dbae97a6877877e1f9bb03e.jpeg

更多Python学习内容:ipengtao.com

在 Python 编程中,处理字符串是一项常见的任务。字符串分割是其中的一个常见操作,而 Python 提供了强大的 split() 函数,用于将字符串拆分成多个部分。本文将详细介绍 split() 函数的用法、参数和示例代码,以帮助大家充分利用这个功能。

基本用法

split() 函数是 Python 字符串的内置方法,用于将一个字符串按照指定的分隔符拆分成多个子字符串,并将这些子字符串存储在列表中。

函数的基本语法如下:

str.split([separator[, maxsplit]])
  • separator(可选参数):指定用于分隔字符串的分隔符,默认为所有空白字符(包括空格、制表符、换行符等)。可以是字符串或字符。

  • maxsplit(可选参数):指定最大分割次数。如果提供了此参数,函数将执行最多 maxsplit 次分割。

下面是一个简单的示例,演示如何使用 split() 函数将字符串分割成列表:

# 基本用法示例
text = "Hello,World,Python"
words = text.split(",")  # 使用逗号作为分隔符
print(words)  # 输出:['Hello', 'World', 'Python']

在上述示例中,使用逗号 , 作为分隔符将字符串 text 分割成了一个包含多个单词的列表 words

使用默认分隔符

默认情况下,split() 函数会使用所有空白字符作为分隔符,包括空格、制表符、换行符等。

以下是一个示例:

# 使用默认分隔符分割字符串
text = "Hello   World\tPython"
words = text.split()  # 不提供分隔符,默认使用空白字符分割
print(words)  # 输出:['Hello', 'World', 'Python']

在上述示例中,字符串中的多个连续空白字符被视为一个分隔符。

使用 maxsplit 参数

可以使用 maxsplit 参数来限制分割的次数。这对于只想分割字符串的前几部分很有用。

以下是一个示例:

# 使用 maxsplit 参数限制分割次数
text = "apple,banana,grape,orange"
fruits = text.split(",", 2)  # 最多分割两次
print(fruits)  # 输出:['apple', 'banana', 'grape,orange']

在上述示例中,使用 maxsplit=2,将字符串 text 最多分割为两部分,结果列表中有三个元素。

使用自定义分隔符

除了使用逗号 , 作为分隔符,split() 函数还可以使用任何其他字符或字符串作为分隔符。

以下是一个示例,使用分号 ; 分割字符串:

# 使用分号作为分隔符
text = "apple;banana;grape;orange"
fruits = text.split(";")  # 使用分号作为分隔符
print(fruits)  # 输出:['apple', 'banana', 'grape', 'orange']

分割换行符

处理文本文件时,常常需要根据换行符来分割文本的不同行。split() 函数可以轻松应对这种情况。

以下是一个示例:

# 使用换行符分割文本
text = "Line 1\nLine 2\nLine 3"
lines = text.split("\n")  # 使用换行符分割
print(lines)  # 输出:['Line 1', 'Line 2', 'Line 3']

处理连续分隔符

有时,字符串中可能包含连续的分隔符。默认情况下,split() 函数会将连续的分隔符视为一个分隔符并忽略中间的空字符串。

以下是一个示例:

# 处理连续分隔符
text = "apple,,banana,,grape,,orange"
fruits = text.split(",")  # 使用逗号作为分隔符
print(fruits)  # 输出:['apple', '', 'banana', '', 'grape', '', 'orange']

在上述示例中,由于字符串中存在连续的逗号 ,,split() 函数将其视为一个分隔符,并在结果列表中包含了空字符串 ''

分割指定次数

如果只希望分割字符串的前几部分,可以使用 maxsplit 参数来限制分割次数。

以下是一个示例:

# 分割指定次数
text = "apple,banana,grape,orange"
fruits = text.split(",", 2)  # 最多分割两次
print(fruits)  # 输出:['apple', 'banana', 'grape,orange']

在上述示例中,使用 maxsplit=2,将字符串 text 最多分割为两部分,结果列表中有三个元素。

注意事项

在使用 split() 函数时,需要注意以下几个方面:

  1. 分隔符可以是任何字符串,包括多个字符的字符串。

  2. 如果不提供分隔符,则默认使用所有空白字符,包括空格、制表符、换行符等。

  3. 默认情况下,连续的分隔符会被视为一个分隔符,并且中间的空字符串会包含在结果列表中。

  4. 使用 maxsplit 参数可以限制分割的次数,但不能指定从字符串的末尾开始分割。

示例应用场景

当处理字符串时,有许多情况下需要使用字符串分割函数 split() 来解析和提取数据。

1.CSV 文件解析

CSV 文件通常由逗号分隔的值组成,使用 split() 函数可以轻松解析 CSV 行并提取数据。

csv_line = "John,Doe,30,New York"
csv_data = csv_line.split(",")
first_name, last_name, age, city = csv_data
print(f"First Name: {first_name}, Last Name: {last_name}, Age: {age}, City: {city}")

2.URL 解析

从 URL 中提取域名、路径、查询参数等信息。

url = "https://www.example.com/page?param1=value1&param2=value2"
parts = url.split("://")[1].split("/")
domain = parts[0]
path = "/".join(parts[1:])
print(f"Domain: {domain}, Path: {path}")

3. 配置文件解析

解析配置文件中的键值对。

config_str = "username=admin\npassword=secret\ndatabase=appdb"
config_data = {}
for line in config_str.split("\n"):key, value = line.split("=")config_data[key] = value
print(config_data)

4.日志文件处理

从日志文件中提取日期、时间、日志级别等信息。

log_entry = "2022-01-15 10:30:15 [INFO] This is an informational message."
log_parts = log_entry.split(" ")
log_date = log_parts[0]
log_time = log_parts[1]
log_level = log_parts[2]
log_message = " ".join(log_parts[3:])
print(f"Date: {log_date}, Time: {log_time}, Level: {log_level}, Message: {log_message}")

5.数据清洗和处理

在数据处理中,分割字符串是一种常见的方式,特别是在清洗和准备数据时。

data = "10,20,30,40,50"
values = [int(x) for x in data.split(",")]
average = sum(values) / len(values)
print(f"Average: {average}")

6.文件路径解析

从文件路径中提取目录和文件名。

file_path = "/path/to/some/file.txt"
parts = file_path.split("/")
directory = "/".join(parts[:-1])
file_name = parts[-1]
print(f"Directory: {directory}, File Name: {file_name}")

总结

Python 中的 split() 函数是一个强大且灵活的工具,用于将字符串按照指定的分隔符拆分成多个子字符串。无论是简单的文本处理还是复杂的数据解析,split() 函数都能提供便捷的解决方案。通过熟练掌握 split() 函数的用法,可以更轻松地处理各种字符串操作任务。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

634290f1a5067865a5fcdd9fb5f997f9.png

点击“阅读原文”,获取更多学习内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 转换文字编码与换行符 nkf命令

参考资料 【 nkf 】コマンド――文字コードと改行コードを変換するnkfコマンドでファイルの文字コードと改行コードを統一する 目录 一. 前期准备二. 乱码现象与分析三. nkf命令3.1 nkf --guess 查看文件编码3.2 nkf -w8 UTF-8(BOM)编码显示3.3 nkf -wd --overwrite 覆盖源文件…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别: DDL(Data Definition Languages)语句 数据定义语言,这…

springAMQP接收消息报错

报错问题 01-10 23:04:33:471 WARN 14400 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer : Failed to declare queue: simple,queue 01-10 23:04:33:474 WARN 14400 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer : Queue declaratio…

C#无标题栏窗体拖动代码

文章目录 一、概念二、案例三、常见问题四、链接 一、概念 C#(C Sharp)是由微软公司开发的一种面向对象的编程语言。它是从C和C语言演化而来的,并结合了Java和其他编程语言的特性。C#是微软.NET平台的一部分,允许开发人员创建各种…

EMC VNXe / Unity存储系统如何找回密码

开始之前,先简单说说,EMC的VNXe存储之间的关系。 EMC的VNXe和Unity存储的操作系统OS是一样的,当然不是完全一样,但是架构是一样的,先推出的产品是VNXe,然后在这个基础上演进到了Unity,Unity XT…

R语言【paleobioDB】——pbdb_interval():通过ID选择,返回一个地层年代段的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_interval (id, ...) Arguments 参数【id】…

港大谷歌提出GO-NeRF:在NeRF中生成协调且高质量的3D对象

尽管在3D生成方面取得了进展,但在作为NeRF表示的现有3D场景中直接创建3D对象仍然是未经探索的。这个过程不仅需要高质量的3D对象生成,还需要将生成的3D内容无缝地合成到现有的NeRF中。为此,作者提出了一种新方法,GO-NeRF&#xff…

电脑定时关机应用

这是一个Python应用。家里卧室装了新电视,HDMI连接笔记本追剧还是很愉快的。可是经常睡着,自然忘了关机。搜了一大圈,都是用命令行或者bat解决。商店里的应用也不好用,有些还收费。于是萌生了自己写一个定时关机应用的想法。利用N…

监控平台zabbix介绍与部署

1. 完整的项目 业务架构:客户端 -> 防火墙 -> 负载均衡(四层、七层)-> Web缓存/应用 -> 业务逻辑(动态应用)-> 数据缓存 -> 数据持久 运维架构:运维客户端 -> 堡垒机/跳板机&#x…

Java使用线程池代码

下面是一个使用Java线程池的示例代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ThreadPoolExample {public static void main(String[] args) {// 创建一个固定大小的线程池,大小为5Executo…

TLC Nand Flash 存储单元的读取原理

我们知道Nand Flash使用浮栅晶体管作为存储单元(memory cell)来存储数据,浮栅晶体管物理结构如图1所示: 图1 浮栅晶体管 对于普通的晶体管(去掉浮栅晶体管中的浮栅层,floating gate)&#xff0…

windows安装运行Apache James(基于spring的版本)

下载地址 下载列表 https://james.apache.org/download.cgi 直接下载基于spring版本 https://www.apache.org/dyn/closer.lua/james/server/3.8.0/james-server-app-3.8.0-app.zip 设置签名 解压,并切换到james-server-spring-app-3.8.0目录下,在powe…

基于Docker的Nginx的安装与配置

基于Docker的Nginx的安装与配置 1 为Nginx创建一个容器1.1 学习docker run1.2 通过docker run为Nginx创建并启动一个容器 2 配置Nginx2.1 学习docker的bind mount技术2.2 在Nginx容器中找到想修改的文件所在的目录2.2.1 认识nginx.conf文件2.2.2 访问Nginx服务,默认…

排序算法-归并排序(含C语言代码示例)

一、算法介绍 归并排序是一种基于分治思想的经典排序算法,其主要思想是将待排序的数组分割成两个子数组,分别对这两个子数组进行递归排序,然后将排好序的子数组合并起来得到最终有序数组。整个归并排序的过程可以分为三个步骤:分割…

【MATLAB】VMD_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 变分模态分解(Variational Mode Decomposition,VMD)和LSTM(Long Short-Term Memory)神经网络结合的算法是一种用于处理时间序列…

超详细的嵌入式cJSON使用注意事项,持续补充中......

文章目录 一、堆内存不足1.1 问题描述1.2 解决办法 二、内存泄露2.1 忘记Delete2.2 忘记Free2.3 串口数据接收缺少部分字符导致的内存泄露(自己的问题)问题分析 2.4 内存泄露在Cortex-M3内核会发生什么? cJSON开源库地址: cJSON 一、堆内存不足 1.1 问…

ssm基于Web的课堂管理系统设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

【GitHub项目推荐--开源的坦克大战】【转载】

坦克大战当年红遍大江南北,很多和我一样的九零后应该都有着对这个游戏的记忆。现在显示器分辨率越来越高,使用矢量图来实现像素风格游戏,可以获得非常高的展现质量。 这个项目是作者肥超花了很长时间折腾的复刻版本,所有元素都使…

localhost与127.0.0.1的区别

localhost 跟 127.0.0.1 都是用于指代本地计算机的方式,但是他们之间有一微小的区别。 1、解析方式 localhost 通常通过系统的hosts文件进行解析,这个文件会映射域名到对应的ip地址。在大多数系统中,localhost 被映射到 127.0.0.1.127.0.0.…

余弦相似度的计算以及公式

公式: 思想:余弦相似度的思想是通过计算两个向量之间的余弦值来衡量它们的相似程度。如果两个向量之间的夹角越小,它们的余弦值就越接近1,也就意味着它们越相似。而如果它们的夹角越大,余弦值就越接近0,也就…