拆分字符串并忽略 Python 中的空字符串

在 Python 中拆分字符串并忽略空字符串

Split string and ignore empty strings in Python

要拆分字符串并忽略空字符串:

  1. 使用str.split()方法将字符串拆分为列表。
  2. None作为函数的第一个参数传递filter(),列表作为第二个参数传递。
  3. filter()函数将从列表中删除所有空字符串。
主程序
my_str = ',one,two,three,' my_list = list(filter(None, my_str.split(','))) print(my_list) # 👉️ ['one', 'two', 'three'] # Alternative (list comprehension) # 👇️ ['one', 'two', 'three'] print([word for word in my_str.split(',') if word])

我们使用该str.split()方法将字符串拆分为列表。

主程序
my_str = ',one,two,three,' # 👇️ ['', 'one', 'two', 'three', ''] print(my_str.split(','))

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

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

姓名 描述
分隔器 在每次出现分隔符时将字符串拆分为子字符串
最大分裂 最多maxsplit完成拆分(可选)

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

下一步是使用该filter()函数从结果中排除所有空字符串。

主程序
my_str = ',one,two,three,' my_list = list(filter(None, my_str.split(','))) print(my_list) # 👉️ ['one', 'two', 'three']

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

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

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

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

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

使用后保留空字符串的默认行为str.split()是这样我们就可以使用相同的分隔符将列表连接到相同的字符串中。

主程序
my_str = ',one,two,three,' my_list = my_str.split(',') print(my_list) # 👉️ ['', 'one', 'two', 'three', ''] my_str_again = ','.join(my_list) print(my_str_again) # 👉️ ',one,two,three,'

如果我们从列表中删除空字符串,然后将列表连接成一个字符串,我们将最终删除前导和尾随的逗号。

主程序
my_str = ',one,two,three,' my_list = list(filter(None, my_str.split(','))) print(my_list) # 👉️ ['', 'one', 'two', 'three', ''] my_str_again = ','.join(my_list) print(my_str_again) # 👉️ 'one,two,three'

拆分字符串并忽略空字符串的另一种方法是使用列表理解。

要拆分字符串并忽略空字符串:

  1. Use the str.split() method to split the string into a list.
  2. Use a list comprehension to iterate over the list.
  3. On each iteration, check if the list item is truthy to exclude empty strings
    from the result.
main.py
my_str = ',one,two,three,' my_list = [word for word in my_str.split(',') if word] print(my_list) # 👉️ ['one', 'two', 'three']

We used the str.split() method to split the string on each occurrence of a
comma and a list comprehension to iterate over the list.

List comprehensions are used to perform some operation for every element, or select a subset of elements that meet a condition.

On each iteration, we simply check if the string is truthy, and since empty
strings are not, we exclude them from the result.

您选择哪种方法是个人喜好的问题。如果您不熟悉函数作为第一个参数filter()传递时的工作原理,列表理解方法应该更容易阅读并且更明确。None