python搜索一个字符串并返回整个字符串,其中包含匹配的字符串或所需的d

2024-06-26 14:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找这样的东西

输入/输出:

FAILED: Exception thrown in login flow loginUser flow
FAILED: Arrayoutofbounds in create user CreateUser flow
PASSED: ForgetPassword flow is successful.

订单号:

FAILED:loginUser 
FAILED:CreateUser 
PASSED:ForgetPassword 

基本上,我试图获取它失败并通过的流的列表

我试过这个

list = ['PASSED', 'SKIPPED', 'FAILED']

if all(word in output for word in list):
    print "Hey Word Found"

但是如果找到或者没有找到这个词,上面的截图就会返回

但是我需要解析字符串中的流名称,它匹配上面的任何一个

在实现这一点上需要一些帮助


Tags: increateexceptionloginflowlistwordfailed
1条回答
网友
1楼 · 发布于 2024-06-26 14:58:39

你可以用正则表达式

>>> s = '''FAILED: Exception thrown in login flow **loginUser** flow
FAILED: Arrayoutofbounds in create user **CreateUser** flow
PASSED: **ForgetPassword** flow is successful.'''.splitlines()
>>> for line in s:
    m = re.search(r'^(' + '|'.join(lst) + r'):.*?\*\*([^*]*)', line)
    if m:
        print(m.group(1)+ ':' + m.group(2))


FAILED:loginUser
FAILED:CreateUser
PASSED:ForgetPassword
>>> 

这个r'^(' + '|'.join(lst) + r'):.*?\*\*([^*]*)'创建了一个看起来像(PASSED|SKIPPED|FAILED):.*?\*\*([^*]*)的正则表达式。因此第一个捕获组包含,PASSEDSKIPPEDFAILED,seocnd组包含存在于两个**之间的字符

如果不存在*,则可以获取在flow之前存在的字符串

m = re.search(r'^(' + '|'.join(lst) + r'):.*\s(\S+)\s+flow\b', line)

相关问题 更多 >