从字符串中删除非数字字符并对其使用int()函数后,会发生错误

2024-04-25 13:43:01 发布

您现在位置:Python中文网/ 问答频道 /正文

具体行是

b = int(a.translate(None, "\t<,"))

a是包含"\t<56,000"的字符串。当我打印translate操作的结果时,我得到“56000”,但是当它到达int()行时,它会给我一个错误提示

ValueError: invalid literal for int() with base 10: ''

好像我给它的字符串因为某种原因是空的。我做错什么了吗?(如果有什么变化,我也会从一个txt文件中读取字符串)

以下是源代码:link


Tags: 文件字符串txtnoneforbase错误with
2条回答

问题是,除了您认为得到的所有字符串之外,您还得到了一些仅由“\t”组成的字符串,然后通过字符串转换将其转换为空字符串。你知道吗

在测试空字符串时,向if测试添加一个附加子句可以解决此问题:

if (i != " ") and (i != "") and (i != "\t"):
    (...)

而不是:

if i != " " and i != "":
    (...)

另外,为了清楚起见,请考虑使用括号。。。你知道吗

您可以使用filter

b = int(filter(lambda character: character.isdigit(), a))

对于Python 3:

b = int(''.join(filter(lambda character: character.isdigit(), a)))

相关问题 更多 >