Python 3 int和字符串转换

问题描述 投票:0回答:3

我有几个问题。只是为了解释这段代码中发生的事情,我以一个YouTube频道的订阅者人数为单位,并尝试将其转换为int以便可以被相乘,除法等。是否可以在.replace方法中放入类似“。后跟任意三个字符”的内容。这是因为某些YouTube频道的订阅者数量为“ 304万”。当我从HTML中提取该字符串时,我希望能够将其转换为int。那是第一个“ if”语句,我要说的是“如果子计数具有小数点后跟3个字符,即;两个数字和字母,然后删除小数点并用相应数量的零替换字母,根据小数点后的位置。如果后面没有3个字符,我想转到第一个“ else”,这会由于小数点后的位置而使字母的值降低10而不是100。没有小数,我只想将字母转换为零的常规数量。我可能应该指出,我是python的新手,只有大约3天的使用时间。以前的经验就像十个小时的Java一样,我几乎忘了。

感谢您提供的任何帮助!

subC = self.driver.find_element_by_xpath('/html/body/ytd-app/div/ytd-page-manager/ytd-browse/div[3]/ytd-c4-tabbed-header-renderer/app-header-layout/div/app-header/div[2]/div[2]/div/div[1]/div/div[1]/yt-formatted-string')
        print('subscriber count is: ' + str(subC.text))

        if ".XXX" in subC.text:
                subC.text.replace('k' , '0')
                subC.text.replace('M' , '0000')
                subC.tect.replace('B' , '0000000')
        else:
            if "." in subC.text:
                subC.text.replace('k' , '00')
                subC.text.replace('M' , '00000')
                subC.text.replace('B' , '00000000')
                subC.text.replace('.' , '')
            else:
                subC.text.replace('k' , '000')
                subC.text.replace('M' , '000000')
                subC.text.replace('B' , '000000000')

        (realSub, other) = subC.text.split(maxsplit=1)

        print(int(realSub))
python python-3.x string selenium int
3个回答
1
投票

使用正则表达式和字典,您可以找到所需的内容:

import re
d = {'M': 1000000, 'k': 1000, 'B': 1000000000}
subC = '3.04M'
if re.search('\d{2}([a-zA-z])', subC):
    match = re.search('\d{2}([a-zA-z])', subC).group(1) #Get the M
    subC2 = float(subC.replace(match,'')) # Remove the M and turn it into a float

    sub_number = int(subC2*d.get(match)) # Use dictionary to convert it to millions
else:
    sub_number = int(subC)
sub_number

也许我错过了您的一个案例,请让我知道是否发生这种情况,或者您是否不了解。]

输出:
 3040000


0
投票

尝试一下


0
投票

您可以使用正则表达式来做到这一点。如果我理解正确,数字可以采用以下格式(带有k,M或B):

© www.soinside.com 2019 - 2024. All rights reserved.