selenium 如何只比较包含数字的文本部分?

slhcrj9b  于 2023-01-02  发布在  其他
关注(0)|答案(3)|浏览(125)

所以我列了个单子

driver.find_elements_by_*

并且例如当用.text打印时,该列表看起来如下:

17.4K gems
8.5K gems
11.4K gems
9.7K gems

我可以用某种方法只比较part和number,而不用创建一个新的列表,这样它就可以像下面的代码一样工作了吗?

if gems[x].text > '10.5':
   print(gems[x].text)
wlzqhblo

wlzqhblo1#

尝试这到获得号码列表

name_list = ["17.4K gems", "8.5K gems", "11.4K gems", "9.7K gems"]
nums = [float(item.split('K')[0]) for item in name_list]
print(nums)
9nvpjoqh

9nvpjoqh2#

你可以试试这个:
示例列表:

name_list = ["17.4K gems", "8.5K gems", "11.4K gems", "9.7K gems"]

for name in name_list:
    split_name = name.split("K")
    print(split_name[0])

输出:

17.4
8.5
11.4
9.7

然后,您可以进行如下比较:

if split_name[0] > '<some value>':
    <condition>
jhdbpxl9

jhdbpxl93#

一种方法是在"K"字母处拆分字符串,例如使用

import re
re.split('K', element)

并将第一部分的内容与10.5进行比较。注意,这将是一个字符串,因此需要首先转换为float:float(re.split('K', element)[0]).
最后,如果你想以一种全面的方式来写这篇文章,你最终会得到一个新的列表,它可以用不同的方式来打印。
示例:

myList=['17.4K gems', '9.8K gems', '0.9K gems', '15.3K gems']
for el in [item for item in myList if float(re.split('K',item)[0]) > 10.5]:
  print(el)

其返回

17.4K gems
15.3K gems

相关问题