从字符串列表中匹配字符串

2024-09-24 12:32:04 发布

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

def email_delete(brwser):
    user_input = input("Would you like to delete some emails?: > Y/N")
    key_words = ["Order", "order", "Re:", "Purchase"]
    # email_indi_subject = []
    email_search(brwser)
    sleep(3)
    email_subjects = brwser.find_elements_by_xpath("//span[@data-testid='message- 
                                                                   column:subject']")
    
   if user_input == "y" or user_input == "Y":
       sleep(2)
       try:
           for subject in email_subjects:
               # sleep(0.25)
               # print(subject.get_property('title'))
               # email_indi_subject.append(str(subject.get_property('title')))

               if any(words in str(subject.get_property('title')) 
                                                              for words in key_words):
                print("Keep > " + subject.get_property('title'))
            else:
                print("Loss > " + subject.get_property('title'))

       except StaleElementReferenceException as sers:
            print(sers)

'''for keyw in key_words: # printing 4 times checking each individual keyword ??works i think??
    for subject in email_indi_subject:
        if keyw in subject:
            print("Keep: > " + subject)
        else:
            print("Loss: > " + subject) '''

我一直在尝试将列表中的单词与每封电子邮件的单个主题(字符串)进行匹配,但问题是我似乎无法将列表中的单词与单个主题进行匹配。在底部这样做,我相信它是有效的,但显然有其弊端


Tags: keyinforinputgettitleemailsleep
2条回答

ZoidEEE,当您尝试从用户获取输入时,可以使用.upper()。此方法将字符串中的所有小写字母返回到uppercase。因此,您可以在if语句中使用y而不是"y""Y"

我认为你唯一想改变的是:

if any(words in str(subject.get_property('title')) for words in key_words):

由于您至少需要一个匹配项,请定义此函数:

def any_match(string, patterns):
    for pattern in patterns:
        if pattern in string:
            return True
    return False

并将上述线路替换为:

if any_match(str(subject.get_property('title')), key_words):

相关问题 更多 >