使用 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 行,在提取的文本,即 1,961 之间包含一个 ,
字符。所以你不能直接在上面调用int()
。
解决方案
您需要先从文本1,961中replace()
,
字符,然后调用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 将多个字符串元素列表转换为单个元素以逗号分隔的列表
如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?