迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中将字符串拆分为单词列表

作者:迹忆客 最近更新:2023/02/05 浏览次数:

在 Python 中将字符串拆分为单词列表

使用 str.split() 方法将字符串拆分为单词列表,例如 my_list = my_str.split()

str.split() 方法将字符串拆分为一个或多个空白字符,并返回包含单词的列表。

import re

my_str = 'one two three four'

# ✅ split string into list of words (str.split())

my_list = my_str.split()
print(my_list)  # 👉️ ['one', 'two', 'three', 'four']

# ---------------------------------------------------

my_str = 'one,two,three,four'

my_list = my_str.split(',')
print(my_list)  # 👉️ ['one', 'two', 'three', 'four']

# ---------------------------------------------------

# ✅ split string with multiple delimiters into list of words (re.findall())

my_str = 'one two, three four. five'

my_list = re.findall(r'[\w]+', my_str)
print(my_list)  # 👉️ ['one', 'two', 'three', 'four', 'five']

第一个示例使用 str.split() 方法将字符串拆分为单词列表。

my_str = 'one two three four'

my_list = my_str.split()
print(my_list)  # 👉️ ['one', 'two', 'three', 'four']

str.split() 方法使用定界符将字符串拆分为子字符串列表。

该方法采用以下 2 个参数:

  • separator 在每次出现分隔符时将字符串拆分为子字符串
  • maxsplit 最多完成 maxsplit 拆分(可选)
my_str = 'one,two,three,four'

my_list = my_str.split(',')
print(my_list)  # 👉️ ['one', 'two', 'three', 'four']

当没有分隔符传递给 str.split() 方法时,它会将输入字符串拆分为一个或多个空白字符。

如果在字符串中找不到分隔符,则返回仅包含 1 个元素的列表。

如果需要根据多个分隔符将字符串拆分为单词列表,请使用 re.findall() 方法。


使用 re.findall() 将字符串拆分为单词列表

使用 re.findall() 方法将字符串拆分为单词列表,例如 my_list = re.findall(r'[\w]+', my_str)re.findall() 方法将在每次出现单词时拆分字符串,并返回包含单词的列表。

import re


my_str = 'one two, three four. five'

my_list = re.findall(r'[\w]+', my_str)
print(my_list)  # 👉️ ['one', 'two', 'three', 'four', 'five']

re.findall 方法将一个模式和一个字符串作为参数,并返回一个字符串列表,其中包含字符串中该模式的所有非重叠匹配项。

我们传递给 re.findall() 方法的第一个参数是一个正则表达式。

方括号 [] 用于表示一组字符。

\w 字符与 Unicode 单词字符匹配,并且包括可以作为任何语言的单词一部分的大多数字符。

加号 + 使正则表达式匹配前面字符(Unicode 字符)的 1 次或多次重复。

re.findall() 方法返回一个包含字符串中单词的列表。

如果我们在阅读或编写正则表达式时需要帮助,请参考我们的正则表达式教程

该页面包含所有特殊字符的列表以及许多有用的示例。

如果我们需要更灵活的方法,可以使用 str.replace() 方法在拆分之前从字符串中删除特定字符。


使用 str.replace() 将字符串拆分为单词列表

将字符串拆分为单词列表:

  1. 使用 str.replace() 方法从字符串中删除任何标点符号。
  2. 使用 str.split() 方法在一个或多个空白字符上拆分字符串。
  3. str.split() 方法将返回包含单词的列表。
my_str = 'one two, three four. five'

my_list = my_str.replace(',', '').replace('.', '').split()
print(my_list)  # 👉️ ['one', 'two', 'three', 'four', 'five']

我们使用 str.replace() 方法在拆分空白字符的字符串之前删除标点符号。

str.replace 方法返回字符串的副本,其中所有出现的子字符串都被提供的替换项替换。

该方法采用以下参数:

  • old 字符串中我们要替换的子串
  • new 替换每次出现的 old
  • count 仅替换第一个 count 出现(可选)

str.replace() 方法不会更改原始字符串。 字符串在 Python 中是不可变的。

我们使用空字符串进行替换,因为我们要删除指定的字符。

我们可以根据需要将尽可能多的调用链接到 str.replace() 方法。

最后一步是使用 str.split() 方法将字符串拆分为单词列表。

如果在将字符串拆分为单词时需要删除所有标点符号,请对每个单词使用 str.strip() 方法。

import string

# 👇️ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.punctuation)

my_str = 'one two, three four. five'

my_list = [word.strip(string.punctuation) for word in my_str.split()]
print(my_list)  # 👉️ ['one', 'two', 'three', 'four', 'five']

我们使用 str.strip() 方法从每个单词中去除前导和尾随标点符号。

string.punctuation 属性返回包含常用标点字符的字符串。

我们使用列表理解来迭代单词列表,并对每个单词调用 str.strip() 方法。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

str.strip 方法返回删除了指定前导字符和尾随字符的字符串副本。


在 Python 中将字符串拆分为不带标点符号的单词列表

使用 re.findall() 方法将字符串拆分为不带标点符号的单词列表,例如 my_list = re.findall(r'[\w]+', my_str)

re.findall() 方法将在每次出现单词时拆分字符串,并返回一个包含不带标点符号的单词的列表。

import re

# ✅ split string into list of words without punctuation (re.findall())

my_str = 'One, two. three! four? @five'

my_list = re.findall(r'[\w]+', my_str)
print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

# -------------------------------------------

# ✅ split string into list of words without punctuation (re.split())

my_list = [item for item in re.split(r'\W+', my_str) if item]
print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

# -------------------------------------------

# ✅ split string into list of words without punctuation (str.replace())

my_list = my_str.replace(',', '').replace(
    '.', '').replace('!', '').replace('?', '').replace('@', '').split()

print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

第一个示例使用 re.findall() 方法将字符串拆分为不带标点符号的单词列表。

re.findall 方法将一个模式和一个字符串作为参数,并返回一个字符串列表,其中包含字符串中该模式的所有非重叠匹配项。

我们传递给 re.findall() 方法的第一个参数是一个正则表达式。

import re


my_str = 'One, two. three! four? @five'

my_list = re.findall(r'[\w]+', my_str)
print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

方括号 [] 用于表示一组字符。

\w 字符与 Unicode 单词字符匹配,并且包括可以作为任何语言的单词一部分的大多数字符。

加号 + 使正则表达式匹配前面字符(Unicode 字符)的 1 次或多次重复。

re.findall() 方法返回一个列表,其中包含字符串中没有任何标点符号的单词。

如果我们需要更灵活的方法,可以使用 str.replace() 方法在拆分空白字符之前删除标点符号。

使用 str.replace() 将字符串拆分为不带标点符号的单词列表

要将字符串拆分为不带标点符号的单词列表:

  1. 使用 str.replace() 方法从字符串中删除标点符号。
  2. 使用 str.split() 方法拆分空白字符。
  3. 新列表将包含字符串中没有标点符号的单词。
my_str = 'One, two. three! four? @five'

my_list = my_str.replace(',', '').replace(
    '.', '').replace('!', '').replace('?', '').replace('@', '').split()

print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

在拆分空白字符之前,我们使用 str.replace() 方法删除所有标点符号。

str.replace 方法返回字符串的副本,其中所有出现的子字符串都被提供的替换项替换。

该方法采用以下参数:

  • old 字符串中我们要替换的子串
  • new 替换每次出现的 old
  • count 仅替换第一个 count 出现(可选)

str.replace() 方法不会更改原始字符串。 字符串在 Python 中是不可变的。

我们使用空字符串进行替换,因为我们想删除标点符号。

我们可以根据需要将尽可能多的调用链接到 str.replace() 方法。

str.split() 方法使用定界符将字符串拆分为子字符串列表。

当没有分隔符传递给 str.split() 方法时,它会将输入字符串拆分为一个或多个空白字符。

print('a b c d'.split())  # 👉️ ['a', 'b', 'c', 'd']

如果在字符串中找不到分隔符,则返回仅包含 1 个元素的列表。

使用 re.split() 将字符串拆分为不带标点符号的单词列表

使用 re.split() 方法将字符串拆分为不带标点符号的单词列表,例如 re.split(r'\W+', my_str)

re.split() 方法会将字符串拆分为单词列表,而不保留标点符号。

import re


my_str = 'One, two. three! four? @five'

my_list = [item for item in re.split(r'\W+', my_str) if item]
print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

re.split 方法在所有出现的提供模式上拆分字符串。

我们传递给该方法的第一个参数是一个正则表达式。

\W(大写 W)特殊字符匹配任何不是单词字符的字符。

加号 + 使正则表达式匹配前面字符(任何非单词字符)的 1 次或多次重复。

我们最终根据所有出现的非单词字符拆分字符串。

我们使用列表理解从结果中删除任何空字符串。

如果字符串以标点符号开头或结尾,我们可能会在列表中得到空字符串值。

import re


my_str = '!One, two. three! four? @five?'

result = re.split(r'\W+', my_str)
print(result)  # 👉️ ['', 'One', 'two', 'three', 'four', 'five', '']

列表推导检查列表中的每个项目是否为真并返回结果。

import re


my_str = 'One, two. three! four? @five'

my_list = [item for item in re.split(r'\W+', my_str) if item]
print(my_list)  # 👉️ ['One', 'two', 'three', 'four', 'five']

空字符串是虚假值,因此它们不会被添加到新列表中。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。


在 Python 中根据标点符号拆分字符串

使用 re.split() 方法根据标点符号拆分字符串,例如 my_list = re.split('[,.!?]', my_str)re.split 方法在指定模式的所有出现处拆分字符

import re

my_str = """One, Two Three. Four! Five? I'm!"""

my_list = re.split('[,.!?]', my_str)

# 👇️ ['One', ' Two Three', ' Four', ' Five', " I'm", '']
print(my_list)

re.split 方法接受一个模式和一个字符串,并在每次出现该模式时拆分字符串。

请注意 ,列表中的某些项目包含空格。 如果需要删除空格,请在正则表达式的方括号之间添加一个空格。

import re

my_str = """One, Two Three. Four! Five? I'm!"""

my_list = re.split('[ ,.!?]', my_str)

# 👇️ ['One', '', 'Two', 'Three', '', 'Four', '', 'Five', '', "I'm", '']
print(my_list)

现在我们的正则表达式也匹配空格。 如果需要从列表中删除空字符串,请使用 filter() 函数。

import re

my_str = """One, Two Three. Four! Five? I'm!"""

my_list = list(filter(None, re.split('[ ,.!?]', my_str)))

# 👇️ ['One', 'Two', 'Three', 'Four', 'Five', "I'm"]
print(my_list)

filter 函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。

如果我们为函数参数传递 None ,则 iterable 的所有虚假元素都将被删除。

方括号 [] 用于表示一组字符。

示例中的字符集包括一个逗号 , 一个点 . 一个感叹号 ! 和一个问号

我们可以在方括号之间添加任何其他标点符号,例如 一个冒号:,一个分号;,方括号或圆括号。

import re

my_str = """One, Two: Three;. Four! Five? I'm!"""

my_list = list(filter(None, re.split('[ :;,.!?]', my_str)))

# 👇️ ['One', 'Two', 'Three', 'Four', 'Five', "I'm"]
print(my_list)

注意 filter() 函数返回一个过滤器对象(不是列表)。 如果需要将过滤器对象转换为列表,将其传递给 list() 类。


在 Python 中将字符串拆分为单词和标点符号

使用 re.findall() 方法将字符串拆分为单词和标点符号,例如 result = re.findall(r[\w'\"]+|[,.!?]", my_str)findall() 方法将根据空白字符和标点符号拆分字符串,并返回匹配列表 .

import re

my_str = """One, "Two" Three. Four! Five? I'm """

result = re.findall(r"[\w'\"]+|[,.!?]", my_str)

# 👇️ ['One', ',', '"Two"', 'Three', '.', 'Four', '!', 'Five', '?', "I'm"]
print(result)

re.findall 方法将一个模式和一个字符串作为参数,并返回一个字符串列表,其中包含字符串中该模式的所有非重叠匹配项。

方括号 [] 用于表示一组字符。

\w 字符匹配任何语言中可以作为单词一部分的大多数字符,以及数字和下划线。

如果设置了 ASCII 标志,\w 字符匹配 [a-zA-Z0-9_]

我们的字符集还包括单引号和双引号。

import re

my_str = """One, "Two" Three. Four! Five? I'm """

result = re.findall(r"[\w'\"]+|[,.!?]", my_str)

# 👇️ ['One', ',', '"Two"', 'Three', '.', 'Four', '!', 'Five', '?', "I'm"]
print(result)

如果要从结果中排除单引号或双引号,请删除方括号之间的 '\" 字符。

+ 与前面的字符匹配 1 次或多次。

换句话说,不管单词由多少个字符组成,只要它只包含字符、数字、下划线、单引号和双引号,我们就认为它是一个匹配。

管道 | 字符是一个或。 匹配 A 或 B。

第二组方括号匹配标点符号 - 逗号、点、感叹号和问号。

我们可以在方括号之间添加任何其他标点符号,例如 一个冒号 :,一个分号 ;,方括号或圆括号。

就其整体而言,匹配是 - 一个或多个字符、数字、下划线、引号或方括号之间的任何标点符号。

我们可以根据用例调整正则表达式。 文档的这一部分包含有关每个特殊字符的作用的信息。

这是完整的代码片段。

import re

my_str = """One, "Two" Three. Four! Five? I'm """

# result = re.findall(r"[\w'\"]+|[,.!?]", my_str)
result = re.findall(r"[\w]+|[,.!?]", my_str)

# 👇️ ['One', ',', '"Two"', 'Three', '.', 'Four', '!', 'Five', '?', "I'm"]
print(result)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 将字符串拆分成行

发布时间:2023/05/08 浏览次数:68 分类:MySQL

在本文中,我们将讨论什么是将字符串拆分为行以及如何创建一个自执行函数。 我们主要讨论 SUBSTRING_INDEX() 方法以及一些示例以轻松理解该概念。

Python for 循环中的下一项

发布时间:2023/04/26 浏览次数:179 分类:Python

本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。

Python While 循环用户输入

发布时间:2023/04/26 浏览次数:148 分类:Python

我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。

Python 中的整数规划

发布时间:2023/04/26 浏览次数:193 分类:Python

本文介绍了整数规划和可用于解决混合整数规划问题的 Python 工具。

在 Python 中将整数转换为罗马数字

发布时间:2023/04/26 浏览次数:87 分类:Python

本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。

在 Python 中将罗马数字转换为整数

发布时间:2023/04/26 浏览次数:144 分类:Python

本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。

在 Python 中读取 gzip 文件

发布时间:2023/04/26 浏览次数:70 分类:Python

本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。

在 Python 中锁定文件

发布时间:2023/04/26 浏览次数:141 分类:Python

本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等

在 Python 中将 PDF 转换为文本

发布时间:2023/04/26 浏览次数:196 分类:Python

在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便