小能豆

如何使用 re.sub 将 selenium 字符串转换为整数

py

我真的很绝望在他最后的日子里将我的字符串数字值转换为整数,所以我尝试了这个:

快照:

1.png

代码试验:

follower_count = int(browser.find_element_by_xpath('/html/body/div[1]/section/main/div/header/section/ul/li[2]/a/span').text)
convert_follower_count = re.sub('[^0-9]','', follower_count)

…不起作用:

Traceback (most recent call last):
 File "C:\Users\Desktop\TwitPy\quickstart.py", line 79, in <module>
   followers_count = re.sub('[^0-9]','', follower_count)
 File "C:\Users\AppData\Local\Programs\Python\Python38\lib\re.py", line 208, in sub
   return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object          

阅读 26

收藏
2024-12-06

共1个答案

小能豆

你遇到的错误是因为 follower_count 已经是一个整数了,而你传递给 re.sub 的参数应该是一个字符串,而不是整数。re.sub 需要对字符串进行操作,不能直接应用于整数。

要解决这个问题,首先确保 follower_count 是字符串类型,然后再用 re.sub 进行处理。如果 follower_count 已经是一个字符串,你可以直接用 re.sub 来去除其中的非数字字符。

以下是修改后的代码:

follower_count = browser.find_element_by_xpath('/html/body/div[1]/section/main/div/header/section/ul/li[2]/a/span').text

# 确保 follower_count 是字符串,并使用 re.sub 去除所有非数字字符
convert_follower_count = re.sub('[^0-9]', '', follower_count)

# 将提取出的数字字符串转换为整数
follower_count_int = int(convert_follower_count)

print(follower_count_int)

解释:

  1. follower_count:是从网页中获取的字符串,可能包含非数字字符(例如 1,2341.2k)。re.sub('[^0-9]', '', follower_count) 会删除字符串中的所有非数字字符,只保留数字部分。
  2. convert_follower_count:是从 follower_count 中提取出的纯数字字符串。
  3. follower_count_int:最后将提取出的纯数字字符串转换为整数,便于进行后续的计算或比较。

如果你遇到类似的情况(比如 k, M 等后缀),你可以对它们进行额外的处理,例如将 k 转换为千,M 转换为百万等。

2024-12-06