使用 Python 将包含逗号的抓取字符串转换为整数

Posted

技术标签:

【中文标题】使用 Python 将包含逗号的抓取字符串转换为整数【英文标题】:Convert a scraped string containing comma into an integer using Python 【发布时间】:2021-05-04 14:00:57 【问题描述】:

我试图用 selenium 刮掉追随者的数量,但它清楚地将“ValueError”标识为一个数字:

快照:

代码试验:

follower_count =int(browser.find_element_by_xpath('/html/body/div/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[1]/div/div[5]/div[2]/a/span[1]/span').text)
following_count = int(browser.find_element_by_xpath('/html/body/div/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[1]/div/div[5]/div[1]/a/span[1]/span').text)
        

错误信息:

【问题讨论】:

1,961 有一个逗号,你应该处理。 您可以使用正则表达式 sub 来清理您的字符串,使其只有数字。重新导入后。 newstring = re.sub('[^0-9]','', oldstring) @luthervespers 我有这个:回溯(最近一次通话最后一次):文件“C:\Users\Desktop\InstaPy-master\quickstart.py”,第 79 行,在 followers_count = re .sub('[^0-9]','', follower_count) 文件“C:\Users\AppData\Local\Programs\Python\Python38\lib\re.py”,第 208 行,在 sub return _compile(pattern , flags).sub(repl, string, count) TypeError: expected string or bytes-like object 【参考方案1】:

提取的文本,即 1,961 之间包含一个 , 字符。所以你不能直接在上面调用int()


解决方案

您需要先从文本1,961replace(),字符,然后调用int(),如下所示:

代码块:

# count = browser.find_element_by_xpath('/html/body/div/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[1]/div/div[5]/div[2]/a/span[1]/span').text
count = "1,961"
print(int(count.replace(",","")))
print(type(int(count.replace(",",""))))

控制台输出:

1961
<class 'int'>

这个用例

实际上,您的代码行将是:

follower_count =int(browser.find_element_by_xpath('/html/body/div/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[1]/div/div[5]/div[2]/a/span[1]/span').text.replace(",",""))
following_count = int(browser.find_element_by_xpath('/html/body/div/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div/div[1]/div/div[5]/div[1]/a/span[1]/span').text.replace(",",""))

参考文献

您可以在以下位置找到相关的详细讨论:

How use re.sub to convert selenium string to an Integer

【讨论】:

以上是关于使用 Python 将包含逗号的抓取字符串转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将多个字符串元素列表转换为单个元素以逗号分隔的列表

如何在读取 CSV 文件时将字符串值转换为整数值?

将逗号分隔的字符串转换为Python中的列表

如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?

使用 Python pandas 将具有逗号值的字符串转换为多层索引的单独行

如何将逗号分隔的字符串转换为 Python 中的列表?