为什么每当有特殊字符时我都会收到 ValueError ?

问题描述 投票:0回答:2

我正在尝试将输入的数字添加到列表中。

box = [int(x) for x in input("Type numbers here: ").split()]

box.sort(reverse=False)

print(box)

只要有任何特殊字符,此代码就会出现 ValueError 。这意味着您需要输入数字,数字之间要有空格,如果有逗号则不起作用。它不允许浮点数。我将类型更改为 float 以允许 2,5 等数字并尝试使用

re.sub()
但它不起作用。

python list floating-point integer
2个回答
0
投票

如果你真的想使用逗号而不是点来表示浮点,请执行以下操作

box = [float(x.replace(',','.')) for x in input("Type numbers here: ").split()]

box.sort(reverse=False)

print(box)

替换函数将 , 更改为 .


0
投票

您知道,即使我们输入数字,输入也被视为字符串。这就是为什么您将其转换为 int 以创建列表(如

box = [int(x) for x in input("Type numbers here: ").split()]
)。

所以无法转换成整数的字符自然会产生数值错误。如果您想在代码中提供混合类型的数据,则必须根据您的要求在编码中预处理输入。例如,如果您需要在后续步骤中使用一些特殊字符,您可以创建另一个包含特殊字符的列表;以及一份包含数字的列表。

几个例子:

如果输入的是用逗号分隔的数字,

numbers = input("Type numbers here: ")
numbers = numbers.split(',')
numbers = [int(x) for x in numbers]

如果您想使用以空格分隔的浮点数,其余字符将在稍后阶段使用

numbers = input("Type numbers here: ")
numbers = numbers.split(' ')
ints = [float(x) for x in numbers if x.replace('.','').isdigit()]
char = [x for x in numbers if not x.replace('.','').isdigit()]

等等。

© www.soinside.com 2019 - 2024. All rights reserved.