regex - Selenium Python 如何使用正则表达式查找字符串值中的 2 位数字

标签 regex python-2.7 selenium selenium-webdriver

我有一个元素列表。列表中的每个元素都有一个以下格式的字符串值:

Name[wi ,(86)]Address[I]DOB[]Phone[]ACVSEQ[]
Name[wi ,(87)]Address[I]DOB[]Phone[]ACVSEQ[]
Name[wi ,(86)]Address[I]DOB[]Phone[]ACVSEQ[]

我只想提取数字。 数字始终位于 Name[wi, 它始终是相同的格式。

如何提取数字并将其存储在变量中以便我可以使用它?

我的 Python 代码将迭代元素,如果发现大于 86 的数字,则应返回 false,否则返回 true。

我当前的Python代码是:

def is_match_audit_code_displayed(self):
elements = self.driver.find_elements_by_xpath('//table[@id="reporting_view_report_dg_main_body"]//tr//td[4]//span')
for i in elements:
    if "86" not in i.text:
        print i.text
        return True
    return False

谢谢,里亚兹

使用alecxe答案我已将其包含在我的Python方法中。在元素列表中,使用正则表达式查找括号内的数值。对于列表中的每个项目,检查数值是否小于 86。如果是,则返回 true,否则返回 false。

这是完整的方法例程:

def is_match_audit_code_less_than_max_value_displayed_for_the_filter_report_results(self, max_code): 
    try:
        elements = self.driver.find_elements_by_xpath('//table[@id="reporting_view_report_dg_main_body"]//tr//td[4]//span')
        pattern = re.compile(r"Name\[wi ,\((\d+)\)\]")

        for element in elements:

            value = pattern.findall(element.text)
            if len(value) != 1:
                return False
            value = int(value[0])
            if value > max_code: # e.g. max_code is 86
                return False
            return True
    except NoSuchElementException, e:
        print value
        print "Element not found "
        print e
        screenshot_name = elements + value + get_datetime_now()
        self.save_screenshot(screenshot_name)

最佳答案

您可以使用正则表达式:

import re

elements = self.driver.find_elements_by_xpath('//table[@id="reporting_view_report_dg_main_body"]//tr//td[4]//span')
pattern = re.compile(r"Name\[wi ,\((\d+)\)\]")

for element in elements:
    print(pattern.findall(element.text))

Name\[wi ,\((\d+)\)\] 表达式中,我们必须转义 [, ] , () 因为这些字符在正则表达式中具有特殊含义。 (\d+) 部分是一个捕获组,可以提取一个或多个数字。

关于regex - Selenium Python 如何使用正则表达式查找字符串值中的 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36041129/

相关文章:

java - 替换所有空格分隔的字符串

regex - 在匹配字符串之前在变量上包含正则表达式

Python Snakefood 模块导入普遍失败

python - Selenium webdriver driver.get(url) 挂起...有时

java - 构造“try/catch”不会捕获异常“NoSuchElementException”

javascript - Reshape String,每N个字符插入 "\n"

php - 表情替换 - PHP

python - 如何使用Python生成器

python-2.7 - Selenium Webdriver Python 页面对象 MainPageLocators 类为什么在类名前使用星号

java - 无法获取使用selenium xpath动态显示的双引号中的值