将包含数字和字母的文本行转换为int

时间:2015-01-09 17:21:06

标签: python mysql

我正在开发一个读取RFID卡的程序,然后从数据库中提取有关该卡的信息。我正在使用Python和MySQL,但为了使它工作,我需要转换一个字符串,例如"2345d566k",一个int。我不需要那些字母,只有数字。

当我执行以下操作时:

test = "2345d566k"
test2 = int(test)

它返回:ValueError: invalid literal for int() with base 10: '2345d566k'

如何将此字符串转换为int?

2 个答案:

答案 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,则会产生所有字母。