我有几个问题。只是为了解释这段代码中发生的事情,我以一个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))
使用正则表达式和字典,您可以找到所需的内容:
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
尝试一下
您可以使用正则表达式来做到这一点。如果我理解正确,数字可以采用以下格式(带有k,M或B):