Python—空字符串和空格字符串之间的差异

Python—空字符串和空格字符串之间的差异,python,string,Python,String,据我的业余爱好者所知,空字符串是长度为零的字符串。所以这一定不同于一个只有空格的字符串,对吗?即使打印,两者看起来都一样 我在这里读过()如何识别空字符串,但是当在我认为是空字符串的代码上运行这段代码时,它失败了: print("fish:", fish) if not fish: #if fish is empty string fish = weight print("new fish:", fish) else: print("fish is not

据我的业余爱好者所知,空字符串是长度为零的字符串。所以这一定不同于一个只有空格的字符串,对吗?即使打印,两者看起来都一样

我在这里读过()如何识别空字符串,但是当在我认为是空字符串的代码上运行这段代码时,它失败了:

print("fish:", fish)

if not fish:       #if fish is empty string
    fish = weight
    print("new fish:", fish)
else:
    print("fish is not an empty string")
fish
的打印输出是:

fish:  
我是不是错过了一些很简单的东西?或者
fish
确实是一个空格字符串,这就是空字符串搜索失败的原因

谢谢。

试试:

print("fish:", repr(fish))

它将引用输出并对不可打印的字符使用转义符,这样您就可以看到其中真正的内容。如果它不是
鱼:'
,它实际上不是空的。您也可以只打印
len(fish)
,这将为您提供长度;序列的“falsy”的定义毕竟是“长度为0”。

您可以使用
打印(“fish:.format(fish))
-然后您会看到
fish:<>
在发布这样的输出时,很容易意外地损坏空格,但是从我们可以看到,看起来您的
fish
字符串中只有一个空格。我想,您可能可以先使用
fish.strip()
。尝试
print(repr(fish))
。这将添加周围的引号。引号之间可能有一个非打印字符。请尝试重新键入分配给
fish
。输出为
fish:“
”@浏览者:是的,然后您在其中有一个空格字符。如果要忽略它,请先使用
fish=fish.rstrip()
删除所有尾随空格(这对解释值通常不重要),或使用
fish.strip()
删除尾随空格和尾随空格。好的,我知道了。有没有办法识别变量是否由空格组成?这样我就可以检查它是空的还是只有空间?@TheBrowler:
如果不是fish.strip():
如果你不想保留剥离的版本,那么这将是一个微不足道的测试<代码>如果不是fish或fish.isspace():在不生成临时字符串的情况下工作,但它是多个测试,有点难看;如果不是fish.strip():的单个测试可能会更快,除非涉及的字符串太多。@浏览者:说清楚,
strip
只删除前导和尾随空格。它不会删除内部空白。因此
'spam egs'.strip()
返回
'spam egs'
(单词之间的空格不会被删除)。