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'
(单词之间的空格不会被删除)。