2024-04-25 13:43:01 发布
网友
具体行是
b = int(a.translate(None, "\t<,"))
a是包含"\t<56,000"的字符串。当我打印translate操作的结果时,我得到“56000”,但是当它到达int()行时,它会给我一个错误提示
"\t<56,000"
int()
ValueError: invalid literal for int() with base 10: ''
好像我给它的字符串因为某种原因是空的。我做错什么了吗?(如果有什么变化,我也会从一个txt文件中读取字符串)
以下是源代码:link
问题是,除了您认为得到的所有字符串之外,您还得到了一些仅由“\t”组成的字符串,然后通过字符串转换将其转换为空字符串。你知道吗
在测试空字符串时,向if测试添加一个附加子句可以解决此问题:
if (i != " ") and (i != "") and (i != "\t"): (...)
而不是:
if i != " " and i != "": (...)
另外,为了清楚起见,请考虑使用括号。。。你知道吗
您可以使用filter:
filter
b = int(filter(lambda character: character.isdigit(), a))
对于Python 3:
b = int(''.join(filter(lambda character: character.isdigit(), a)))
问题是,除了您认为得到的所有字符串之外,您还得到了一些仅由“\t”组成的字符串,然后通过字符串转换将其转换为空字符串。你知道吗
在测试空字符串时,向if测试添加一个附加子句可以解决此问题:
而不是:
另外,为了清楚起见,请考虑使用括号。。。你知道吗
您可以使用
filter
:对于Python 3:
相关问题 更多 >
编程相关推荐