在 Python 中按空格拆分字符串

在 Python 中按空格拆分字符串

Split a string by whitespace in Python

使用str.split()不带参数的方法按空格拆分字符串,例如my_list = my_str.split(). 当在str.split()没有参数的情况下调用该方法时,它将连续的空白字符视为单个分隔符。

主程序
my_str = 'a b \nc d \r\ne' my_list = my_str.split() print(my_list) # 👉️ ['a', 'b', 'c', 'd', 'e']

我们使用该str.split()方法按空格拆分字符串。

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

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

姓名 描述
分隔器 在每次出现分隔符时将字符串拆分为子字符串(可选)
最大分裂 最多maxsplit完成拆分(可选)
当在str.split()没有分隔符的情况下调用该方法时,它将连续的空白字符视为单个分隔符。

如果字符串以尾随空格开始或结束,则列表将不包含空字符串元素。

主程序
my_str = ' a b \nc d \r\ne ' my_list = my_str.split() print(my_list) # 👉️ ['a', 'b', 'c', 'd', 'e']

这不同于将包含分隔符空格的字符串传递给split()方法。

主程序
my_str = ' a b \nc d \r\ne ' my_list = my_str.split(' ') print(my_list) # 👉️ ['', '', 'a', '', 'b', '\nc', 'd', '', '\r\ne', '', '']

当我们将分隔符传递给split()方法时,会使用不同的算法。

示例中的列表具有前导和尾随空字符串项,因为字符串以空格开头和结尾。

这种方法也不对所有空白字符进行拆分,例如\t,\n
\r\n,它只对空格进行拆分。

如果我们不向该split()方法传递参数并拆分一个空字符串或仅包含空白字符的字符串,我们将得到一个空列表。
主程序
my_str = ' \n \t \r\n ' my_list = my_str.split() print(my_list) # 👉️ []

此行为也不同于将包含空格的字符串作为分隔符传递给split()方法。

主程序
my_str = '' my_list = my_str.split(' ') print(my_list) # 👉️ ['']

在空字符串上调用split带有分隔符的方法,返回一个包含空字符串元素的列表。

您还可以使用正则表达式按空格拆分字符串。

使用该re.split()方法按空格拆分字符串,例如
my_list = re.split(r'\s+', my_str). re.split()方法将在每次出现空白字符时拆分字符串,并返回包含结果的列表。

主程序
import re my_str = 'a b \nc d \r\ne' my_list = re.split(r'\s+', my_str) print(my_list) # 👉️ ['a', 'b', 'c', 'd', 'e']

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

\s字符匹配 unicode 空白字符,如 [ \t\n\r\f\v].

加号+用于匹配前面的字符(空格)1 次或多次。

就其整体而言,正则表达式匹配一个或多个空白字符。

使用这种方法时,如果您的字符串以空格开头或结尾,您将得到空字符串元素。

主程序
import re my_str = ' a b \nc d \r\ne ' my_list = re.split(r'\s+', my_str) print(my_list) # 👉️ ['', 'a', 'b', 'c', 'd', 'e', '']

您可以使用该filter()函数从列表中删除任何空字符串。

主程序
import re my_str = ' a b \nc d \r\ne ' my_list = list(filter(None, re.split(r'\s+', my_str))) print(my_list) # 👉️ ['a', 'b', 'c', 'd', 'e']

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

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

所有不真实的值都被认为是虚假的。Python 中的虚假值是:

  • 定义为 falsy 的常量:NoneFalse.
  • 0任何数字类型的(零)
  • 空序列和集合:(""空字符串),()(空元组),[]
    (空列表),
    {}(空字典),set()(空集),range(0)(空范围)。

注意filter()函数返回一个filter对象,所以我们必须使用list()类将filter对象转换为列表。

发表评论