【问题标题】:How to search[re] and skip to text in the next line using re in python?如何在python中使用re搜索[re]并跳到下一行的文本?
【发布时间】:2019-12-16 09:41:02
【问题描述】:

我在 python 中有一个字符串,我需要转到下一行字符,将其放入 List 并用逗号分隔。我非常接近使用不同的正则表达式组合的解决方案。但是,我花了几天时间弄清楚这一点,只是找不到正确的正则表达式或制作一个。任何帮助表示赞赏。

这里是字符串格式:

Roles
Administrator,User,Auditor,Console

到目前为止,我已经在 python IDE 中尝试了以下内容(仅供练习):

>>> line: """roles
Administrator,Console,User"""
>>> r2 = re.findall(r'\n^[A-Z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]', line, re.MULTILINE)
>>> print(r2)
['\nAdministrator']

这是我的 pycharm 文件中的实际代码:

    def dashboardroles(self):  
        pagecontent = self.driver.find_element(*Elements.mainpage)
        content = pagecontent.text
        actual = content.split('\n')
        for line in actual:
            if re.search("Roles", line):
                lines = line
                role = lines.split(" ")
                roles = [i.strip(',') for i in role]
                return roles

>>> print(dashboardroles)

使用上面的代码,我得到以下输出:

['Roles']

预期输出: 我需要 A) 跳过“角色”这个词 B) 移动到下一行 C) 打印类似于以下内容的整行:

['Administrator', 'User', 'Auditor', 'Console']

【问题讨论】:

    标签: python-3.x selenium-webdriver pycharm


    【解决方案1】:

    我不是 100% 知道你想要什么,但如果你只需要在 Roles 之后找到该行,则不需要正则表达式...使用这样的标志会起作用

    page = '''garbage111
    Roles
    Administrator,Console,User
    garbage222
    '''
    has_roles = False
    roles = []
    for line in page.split('\n'):
        if has_roles:
            roles = list(line.split(","))
            break
        if line.strip() == "Roles":
            has_roles = True
            #go to the next line with flag set
    print(roles)
    

    打印['Administrator', 'Console', 'User']

    如果你需要使用正则表达式/不想遍历每一行,你可以使用类似这样的东西

    import re
    
    page = '''garbage111
    Roles
    Administrator,Console,User
    garbage222
    '''
    line = re.search(r"^Roles\n(.*)",page, re.MULTILINE).group(1)
    roles = list(line.split(','))
    print(roles)
    

    打印['Administrator', 'Console', 'User']

    【讨论】:

    • 非常感谢您的回复。我已经意识到我不需要正则表达式来实现逻辑。我的一位同事提出了一个可行的解决方案(与您的答案非常相似)。我会用正确的答案更新我最初的问题。
    【解决方案2】:

    上述代码的正确答案如下:

    def dashboardroles(self):
        pagecontent = self.driver.find_element(*Elements.mainpage)
        content = pagecontent.text
        actual = content.split('\n')
        found = False
        for line in actual:
            if found:
                roles = line.split(",")
                return roles
            if re.search("Roles", line):
                found = True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2018-08-21
      • 2018-03-24
      相关资源
      最近更新 更多