7

所以我之前遇到过代码问题,因为当我遍历 foodList 时得到一个空行。

有人建议使用 'if x.strip():' 方法,如下所示。

for x in split:
  if x.strip():
    foodList = foodList + [x.split(",")]

它工作正常,但我只想知道它的实际含义。我知道它会删除空格,但上面的 if 语句不会说如果 x 有空格则为真。这与我想要的相反?只是想先介绍一下术语以及它在幕后所做的事情。

4

3 回答 3

13

在 Python 中,“空”对象——空列表、空字典,以及在本例中的空字符串——在布尔上下文(如if)中被认为是错误的。任何不为空的字符串都将被视为真。 strip去除空格后返回字符串。如果字符串仅包含空格,strip()则将删除所有内容并返回空字符串。所以if strip()意思是“如果结果strip()不是空字符串”——也就是说,如果字符串包含除空格之外的其他内容。

于 2013-06-23T19:04:43.700 回答
3

方法 strip() 返回字符串的副本,其中所有字符都已从字符串的开头和结尾剥离(默认空白字符)。

因此,如果未指定输入字符,它会从字符串的开头和结尾修剪空格。此时,它只是控制字符串是否x为空,而不考虑空格,因为字符串在 python 中empty被解释为false

于 2013-06-23T19:05:30.303 回答
0

简单地说,当用户可以输入一些数据并且您想确保用户输入了某些内容而不是什么都没有时,使用此语法。

让我们进一步简化它:

  • case(1):x.strip()为空,表示用户没有输入任何内容。在这种情况下x.strip()False因为空字符串是“Falsey”
  • case(2):x.strip()不为空,表示用户确实输入了某些内容(空格除外)。在这种情况下x.strip(),将返回删除了前后空格的字符串,即“Truthy”。
于 2020-04-22T06:45:57.730 回答