为了账号安全,请及时绑定邮箱和手机立即绑定

如何让蟒蛇检测逗号?

如何让蟒蛇检测逗号?

缥缈止盈 2022-09-27 16:10:06
更新的代码:import requestsfrom time import sleepimport webbrowserfrom termcolor import coloredimport localelocale.setlocale(locale.LC_NUMERIC, '')print(colored('Lowest Priced Limited\n---------------------\n', 'green'))count = 0while True:    lowestprice = 1234567890    for limited in requests.get('https://search.roblox.com/catalog/json?CatalogContext=1&Keyword=&SortType=0&SortAggregation=3&SortCurrency=0&LegendExpanded=true&Category=2&pageNumber=1').json():        price = locale.atof(limited['BestPrice'])        if price < lowestprice:            limitedname = limited['Name']            limitedurl = limited['AbsoluteUrl']            lowestprice = price    print(colored(f"{limitedname}: {lowestprice}\n{limitedurl}\n"))    sleep(1)    if lowestprice <= 220 and count == 0:        webbrowser.open(limitedurl, new=2)        count += 1
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以使用区域设置模块将价格表示法转换为浮点值。


>>> import locale

>>> locale.atof("1,000.99")

1000.99

或者,如果您只想要整数值:


>>> locale.atoi("1,000")

1000

根据您的配置,您可能需要:


locale.setlocale(locale.LC_NUMERIC,'')

也可能工作:


locale.setlocale(locale.LC_ALL, 'en_US.UTF8')

正如其他人所建议的那样,您只需删除逗号并转换为浮点数:


price = float(limited['BestPrice'].replace(',', ''))

但是,最好熟悉本地化资源以获得更专业的解决方案。


要跳过无效的数字字符串(如空字符串),请执行以下操作:


for limited in requests.get('...').json():

    try:

        price = locale.atof(limited['BestPrice'])

        # or

        # price = float(limited['BestPrice'].replace(',', ''))

        if price < lowestprice:

            limitedname = limited['Name']

            limitedurl = limited['AbsoluteUrl']

            lowestprice = price


    except ValueError as ve:

        print(f"Hit a non-numeric value for {limited['Name']} for price: {ve}")


print(colored(f"{limitedname}: {lowestprice}\n{limitedurl}\n"))

sleep(1)


查看完整回答
反对 回复 2022-09-27
?
HUX布斯

TA贡献1876条经验 获得超6个赞

添加此示例代码是希望它能帮助您了解正在发生的事情,尽管@Todd肯定涵盖了您需要从多个不同角度执行的操作。


import locale

locale.setlocale(locale.LC_NUMERIC,'')

import requests

for limited in requests.get('https://search.roblox.com/catalog/json?Catalog'\

                            'Context=1&Keyword=&SortType=0&SortAggregation='\

                                '3&SortCurrency=0&LegendExpanded=true&Categ'\

                                    'ory=2&pageNumber=1').json():

    if limited['BestPrice'] == '':

        print('This one is empty')

    else:

        print(locale.atof(limited['BestPrice']))

结果:


4195.0

6997.0

2200.0

8149.0

4291.0

2850.0

3299.0

1998.0

23000.0

3000.0

14500.0

10994.0

3996.0

1249.0

3799.0

6499.0

843.0

3100.0

1300.0

680.0

2049.0

2491.0

4099.0

2499.0

2959.0

10500.0

855.0

8698.0

2700.0

3500.0

19500.0

5199.0

8999.0

55555.0

2844.0

2299.0

5000.0

1399.0

699420.0

This one is empty

55000.0

4400.0

这些是迭代 json 时出现的最佳价格值。这些是您需要使用的值。其中一个是空字符串。limited


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信