selenium 如何从元素中只获取文本或数字

o75abkj4  于 2023-02-04  发布在  其他
关注(0)|答案(2)|浏览(191)

我只想从元素中获取文本,然后只从元素中获取数字。

global textelement
    textelement = (WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='text-nowrap text-truncate']")))).text

我收到的短信是这样的

U(4) Leiknir

我希望一个变量只包含元素中的文本,另一个变量只包含该文本中的数字,因此输出如下所示:
仅文本

U Leiknir

以及
仅数字

4

有可能做到吗?

s8vozzvw

s8vozzvw1#

是的,你可以通过使用正则表达式和过滤器函数这样做.

import re
def filter_str(s):
    res_num = [int(match) for match in re.findall(r"\d+", s)]
    res_str = "".join(filter(lambda x: not x.isdigit(), s))
    
    return res_num, res_str

s = "U(4) Leiknir"
a, b = filter_str(s)
print("Numbers: ", a , "\nStr: ", b)

输出:

Numbers:  [4] 
Str:  U() Leiknir
syqv5f0l

syqv5f0l2#

是的,你可以用正则表达式来实现。
Import re

textelement ="U(4) Leiknir"
number=re.findall(r'\d+', textelement)[0]
print(number)
chars = " ".join(re.findall("[a-zA-Z]+", textelement))
print(chars)

输出:

4
U Leiknir

更新日期:

textelement ="U(3.45) Leiknir"
number=re.findall(r'(\d+(?:\.\d+)?)', textelement)[0]
print(number)
chars = " ".join(re.findall("[a-zA-Z]+", textelement))
print(chars)

相关问题