我正在开发一个读取RFID卡的程序,然后从数据库中提取有关该卡的信息。我正在使用Python和MySQL,但为了使它工作,我需要转换一个字符串,例如"2345d566k"
,一个int。我不需要那些字母,只有数字。
当我执行以下操作时:
test = "2345d566k"
test2 = int(test)
它返回:ValueError: invalid literal for int() with base 10: '2345d566k'
如何将此字符串转换为int?
答案 0 :(得分:3)
假设你想忽略除数字之外的字符,一个简单的解决方案就是
test = "ab23cd56e3f"
test2 = int(filter(lambda x: x.isdigit(), test))
#test2 is now 23563
filter()
将isdigit()
函数应用于字符串的每个字符,仅保留数字。然后,您可以安全地调用int()
将结果转换为整数。
正如评论中所指出的,这只有在您要转换的每行文字至少包含1位数时才有效。
答案 1 :(得分:2)
您可以轻松地使用正则表达式
import re
"".join(re.findall('\d', "ab23cd56e3f"))
它将解析给定字符串中的所有数字,如果您将\D
替换为\d
,则会产生所有字母。