加入多个字符串,如果它们在 Python 中不为空

如果在 Python 中不为空,则加入多个字符串

Join multiple strings if they aren’t empty in Python

如果在 Python 中不为空,则连接多个字符串:

  1. 使用该filter()函数过滤掉所有虚假值。
  2. join()在字符串分隔符上调用该方法。
  3. 将过滤器对象传递给join()方法。
主程序
my_strings = ['apple', '', 'banana', '', 'kiwi', ''] result = ' '.join(filter(None, my_strings)) print(result) # 👉️ 'apple banana kiwi'

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

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

主程序
my_strings = ['apple', '', 'banana', '', 'kiwi', '', None, 0] # 👇️ ['apple', 'banana', 'kiwi'] print(list(filter(None, my_strings)))

请注意,列表中的所有虚假值都在结果中被过滤掉了。

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

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

str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。

请注意,TypeError如果可迭代对象中有任何非字符串值,该方法将引发 a。

如果您的列表包含数字或其他类型,请在调用之前将所有值转换为字符串join()

主程序
my_strings = ['apple', 1, 'banana', 2, 'kiwi', '', None, 0] result = ' '.join(map(str, filter(None, my_strings))) print(result) # 👉️ 'apple 1 banana 2 kiwi'

调用该方法的字符串用作元素之间的分隔符。

主程序
my_strings = ['apple', '', 'banana', '', 'kiwi', ''] result = '-'.join(filter(None, my_strings)) print(result) # 👉️ 'apple-banana-kiwi'

如果您不需要分隔符而只想将可迭代的元素连接到一个字符串中,请在join()空字符串上调用该方法。

主程序
my_strings = ['a', '', 'b', '', 'c', ''] result = ''.join(filter(None, my_strings)) print(result) # 👉️ 'abc'

仅当字符串不为空时才连接字符串的另一种方法是使用生成器表达式。

主程序
my_strings = ['apple', '', 'banana', '', ' ', 'kiwi', ''] result = ' '.join(item for item in my_strings if item.strip()) print(result) # 👉️ 'apple banana kiwi'

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

我们用它来确保结果中没有任何只包含空格的字符串。

我们将生成器表达式传递给该str.join()方法。

生成器表达式用于对每个元素执行某些操作或选择满足条件的元素子集。