为什么'';显然,在Python中计算为True

为什么'';显然,在Python中计算为True,python,Python,我有: 这将产生以下输出: raw_matrix.append([]) for as_string in ' '.split(line): if as_string: print('as_string: #' + as_string + '#') raw_matrix[-1].append(int(as_string)) as_字符串:## 回溯(最近一次呼叫最后一次): 第27行中的文件“四个产品” 原始矩阵[-1]。追加(int(作为字符串)) Va

我有:

这将产生以下输出:

raw_matrix.append([])
for as_string in ' '.split(line):
    if as_string:
        print('as_string: #' + as_string + '#')
        raw_matrix[-1].append(int(as_string))
as_字符串:##
回溯(最近一次呼叫最后一次):
第27行中的文件“四个产品”
原始矩阵[-1]。追加(int(作为字符串))
ValueError:基数为10的int()的文本无效:“”
原始_矩阵是一个20x20的两位数(十进制)行数组,由空格分隔

如果我读得正确,as_字符串的计算结果为“”或“”,并且由于as_字符串不可解析的副作用,以及它不包含int()-可解析数字字符串的副作用,我得到了一个异常

我怎样才能改变现状,使Python2.x(3.x)解析一个由两位整数组成的字符串,而不是试图将不可解析的字符串解析为整数

谢谢,

线路:

as_string: # #
Traceback (most recent call last):
  File "product_of_four", line 27, in <module>
    raw_matrix[-1].append(int(as_string))
ValueError: invalid literal for int() with base 10: ''
这里很可疑。您正在分隔分隔符
行上的字符串
'
,很可能返回列表
['']
。请记住,只有当字符串为空时(0个字符),字符串才会计算为假y值。字符串
'
不是空的(它有一个字符)

您可能想做以下事情:

for as_string in ' '.split(line):

在连续空格运行时,将拆分

您使用的拆分方式错误;拆分行,而不是
''
空格:

for as_string in line.split():
    ...
通过将空格字符拆分为
分隔符,最终得到的总是
['']
,而不是空字符串:

for as_string in line.split(' '):
>>> ' '.split('10 20 30')
[' ']
(异常是一个空分隔符,不允许,并在
'
上拆分,这将为您提供两个空字符串)。结果中唯一的元素,
'
,是一个非空字符串,在布尔上下文中也是如此

对于错误消息,
int()
忽略前导空格和尾随空格。剩下的是一个空字符串:

for as_string in line.split(' '):
>>> ' '.split('10 20 30')
[' ']
将第一个参数设置为默认值,
None
。使用还会忽略任何前导空格和尾随空格,在从文件中读取行时总是很方便的,其中包括换行符:

for as_string in line.split():
从文件中:

如果未指定sep或sep为
None
,则会应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果的开头或结尾将不包含空字符串。因此,使用
None
分隔符拆分空字符串或仅包含空格的字符串将返回
[]


您的
split
语句构造不正确;它应该是
line.split(“”)
。它的编写方式是,你试图用
的内容来划分一个空格,这显然只是返回空格。不能作为整数计算。

'
计算为True,因为它不是空字符串(其中有空格)


您的代码的问题是,对于“”中的as_字符串,
拆分(行)
实际上应该是对于“”中的as_字符串,
拆分(行)

您从我这里得到+1,就像您第一次在这里一样;我不知道为什么第三个提出这个问题的人在我们面前获得了一张赞成票:-P@MartijnPieters--它可能首先显示,因为有人按最近的活动对其进行了排序。这有时会发生……谢谢你的指点。我是否更正了.split()也在连续(非空白)字符之间拆分,或者如果我只想在空白上拆分,是否使用了.split()以外的内容?你是错误的
.split()
仅对至少一个字符长度的空白进行拆分。