【问题标题】:remove text from tag and save in a database as integer in python从标签中删除文本并在python中以整数形式保存在数据库中
【发布时间】:2021-03-27 02:25:12
【问题描述】:

我的项目从站点读取信息并保存到数据库中?

    price_car=car.find('h4',attrs={'data-test':'vehicleCardPricingBlockPrice'})
    work_car=car.find('div',attrs={'data-test':'vehicleMileage'})

   price=int(price_car.text)
   mile=int(price_car.text)
   cursor.execute('insert into infcars values(,%i,%i )'%(mile,price))
   cnx.commit()

【问题讨论】:

  • 请使用 replace x=price_car.text print(x.replace('$','')) 将为您提供删除 $ 的结果(里程相同)
  • 谢谢,但我收到了这个错误:invalid literal for int() with base 10: '$17,990'
  • 你想如何转换'$17,990'17990(小数点,逗号作为千位分隔符)或18(逗号作为法语小数点)?

标签: python python-3.x database web-scraping sqldatatypes


【解决方案1】:

这是使用正则表达式的一种方式,模式[0-9]+(\.[0-9]+)? 将匹配简单的整数和小数。

正则表达式解释:

  • [0-9]+:至少一个数字
  • ( :该组的开头(用于匹配小数)
    • \. :文字 . 用于小数分隔符
    • [0-9]+:至少一个数字
    • ):小组结束
    • ?: 该组是可选的

代码示例:

import re
number_pattern = re.compile('[0-9]+(\.[0-9]+)?')

def find_number_in_string(s):
    try:
        search = number_pattern.search(s)
        if (search)
            result = search.group(0)  # Group 0 is 'all matched text'
            return float(result)
        return None
    except:
        return None

test1 = find_number_in_string("1250 miles")  # -> 1250
test2 = find_number_in_string("$24.99")  # -> 24.99

它不考虑千位分隔符或逗号之类的东西,请根据您的要求进行调整。

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2016-08-30
    • 1970-01-01
    • 2016-06-15
    • 2020-03-16
    相关资源
    最近更新 更多