Python
基本資料型別
字符串
分裂

Python split() splitlines() re.split()方法: 分隔符, 按字符,多个分隔符,到列表

编程中最常见的任务之一,特别是在处理基于文本的数据时,就是字符串截断。 当涉及到处理字符串时,Python是几乎所有编程语言中最简单、最强大、最直观的一种。

对于字符串的截断也是如此。Python 提供了许多用于截断字符串的内置方法和函数。

在这篇文章中,我将通过截断和操作字符串的各种技术,以及它们的使用实例,来总结如何在Python中处理字符串。

1. 通过使用list()方法截断每个字符来创建一个列表

在Python中,字符串是一个用单引号或双引号括起来的字符序列。 字符串是不可变的,这意味着一旦它们被声明,其内容就不能被改变。 Python 提供了一些处理字符串的基本内置方法,如剪切、粘贴和格式化字符串。 在这些方法中,我们将重点讨论如何分割一个字符串。

首先,我们将使用list()方法将字符串中的每个字符,包括空格,分割成一个数组。

text = "Python is great language!"
text_list = list(text)
# Output: ['P', 'y', 't', 'h', 'o', 'n', ' ', 'i', 's', ' ', 'g', 'r', 'e', 'a', 't', ' ', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e', '!']
 
# If we wanted to create a list without spaces, we would first remove the spaces with the replace() method and then call the list() method.
 
text_list = list(text.replace(' ', ''))
# Output:  ['P', 'y', 't', 'h', 'o', 'n', 'i', 's', 'g', 'r', 'e', 'a', 't', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e', '!']

2. 用split()方法分割一个字符串

split()方法是Python中分割字符串的最常见和最简单的方法。 它基本上是根据空格来分割一个字符串,并返回一个子字符串的列表。

使用split()的例子。

text = "Python is great language!"
words = text.split()
 
print(words)

下面是运行该例子的结果

['Python', 'is', 'great', 'language!']

你也可以把你想分割字符串的基本字符作为参数传给split()方法,这样你就可以随意分割字符串。

text = "Python-is-great-language!"
words = text.split("-")
 
print(words)

下面是运行该例子的结果

['Python', 'is', 'great', 'language!']

split()方法有一个maxsplit参数。 maxsplit参数指定了字符串可以被分割的最大次数。 当字符串从开始被分割到最大次数后,剩余的字符串将作为最后一个元素返回。

text = "Python is great language! It's easy-to-use."
words = text.split(" ", maxsplit=2)
 
print(words)

下面是运行该例子的结果

['Python', 'is', "great language! It's easy-to-use."]

3. 用splitlines()方法在换行处分行

当处理多行字符串时,使用splitlines()方法。 splitlines()方法将一个多行字符串逐行分割,并返回每条记录的列表。 默认情况下,该方法通过换行符(\n)来分割字符串。

一个使用splitlines()方法的例子:

multiline_text = "Python is great language!\nIt's easy-to-use.\nJust try it today!"
lines = multiline_text.splitlines()
 
print(lines)

下面是运行该例子的结果

['Python is great language!', "It's easy-to-use.", 'Just try it today!']

splitlines()方法还可以选择接受一个keepends参数、 如果这个参数被设置为 True,它将在返回列表的每一行的末尾保留换行符(\n):

multiline_text = "Python is great language!\nIt's easy-to-use.\nJust try it today!"
lines = multiline_text.splitlines(keepends=True)
 
print(lines)

下面是运行该例子的结果

['Python is great language!\n', "It's easy-to-use.\n", 'Just try it today!']

4. 使用re.split()正则表达式分割具有多个定界符的字符串

在某些情况下,你可能需要更高级的分割函数来根据多个定界符或模式分割一个字符串。 Python 的 re 模块提供了一个强大的 split() 函数,允许你使用正则表达式来分割字符串。

下面是一个使用多个定界符分割字符串的例子:

import re
 
text = "Python is;great:language! It's,easy-to-use."
words = re.split(r"[;:,\s]\s*", text)
 
print(words)

下面是运行该例子的结果

['Python', 'is', 'great', 'language!', "It's", 'easy-to-use.']

上面的例子中使用的正则表达式模式是r"[;:,\s]\s*"r"[;:,\s]\s*"的含义是查找所有以分号(;)、冒号(:)、逗号(,)或空格(s)开头,后面有零或多个空格(\s*)的模式。 re.split()函数将在出现这种模式时分割字符串。

使用re.split()的另一种方法是根据模式而不是特定的分隔符来分割字符串:

import re
 
text = "Python is;great:language!1234It's,easy-to-use."
words = re.split(r"\d+", text)
 
print(words)

下面是运行该例子的结果

['Python is;great:language!', "It's,easy-to-use."]

在上面的例子中,正则表达式模式(r"\d+")意味着它匹配一个或多个数字。 函数re.split()在每次出现这种模式时都会分割字符串。

5. 在Python中分割字符串的最佳实践

  • 对于简单的字符串分割,使用Python内置的split()方法。 split()方法对于大多数的字符串分割任务来说都是高效且易于使用的。 它是最好的解决方案,特别是当你根据单一分隔符来分割字符串时。
  • 要分割多行字符串,请使用splitlines()方法。 splitlines()方法是最有效和最方便的方法,可以逐行分割多行字符串,并返回一个以各行为元素的列表。
  • 对于更高级的分割,可以用re.split()来使用正则表达式。 如果你需要根据多个定界符、模式或复杂的规则来分割字符串,re模块的re.split()函数提供了强大而灵活的分割能力。
  • 然而,虽然正则表达式很强大,但它们也可能比内置方法慢。我们建议尽可能地使用内置方法,只有在必要时才使用正则表达式。

6. 总结

在这篇文章中,我们已经介绍了Python内置方法split()splitlines()。 以及 re 模块的 re.split() 函数、 我们已经看到了几种在Python中分割字符串的技术。 理解和掌握这些技术将使你能够在Python中有效地操作和处理基于文本的数据。

从简单的文本处理到复杂的数据提取和转换,这些强大的字符串操作工具都可以为你所用、 我们希望你发现这篇文章对处理各种任务有帮助。

copyright for Python string split

© 2023 All rights reserved.