在Python中从字符串中提取数字

时间:2018-11-17 20:29:39

标签: python mysql

查询MySQL数据库时,我得到了一些不需要的额外字符。 例如,我没有得到165,而是得到(165),,而是尝试以下操作以提取数字。

问题在于,我的代码不会只得到数字,而不会显示任何内容,我找不到原因。有什么建议吗?

 arr = ''

    num = re.findall('\d+', arr)

    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        database="diff"
    )

    mycursor = mydb.cursor()

    mycursor.execute("SELECT * FROM val ORDER BY num DESC LIMIT 1")
    myresult = mycursor.fetchall()

    for x in myresult:
        arr = x        
        print(arr)

3 个答案:

答案 0 :(得分:2)

类似这样的东西:

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="Bellini10-",
    database="diff"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM val ORDER BY num DESC LIMIT 1")
myresult = mycursor.fetchall()

pattern = re.compile("\d+") 

for x in myresult:
    num = pattern.findAll(x)[0]       
    print(num)

答案 1 :(得分:1)

尝试一下:

whitelist = set('0123456789')
num = ''.join(filter(whitelist.__contains__, arr))

希望这会有所帮助!

答案 2 :(得分:1)

我使用过的大多数Python数据库连接器都会返回元组,因此您需要这样做:

for (x,) in myresult:
  print(x)

您应该得到想要的东西

我得到的文档建议您也可以将光标只是一个可迭代的上下文管理器,例如:

with mydb.cursor() as cur:
  cur.execute("SELECT * FROM val ORDER BY num DESC LIMIT 1")
  for (x,) in cur:
    print(x)

会更惯用的Python