簡體   English   中英

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

[英]Match string from list of string

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) '''

我一直在嘗試將列表中的單詞與每個 email 的單個主題(字符串)匹配,但問題是我似乎無法將列表中的單詞與單個主題匹配。 在底部這樣做我相信它有效但顯然有它的垮台。

ZoidEEE,當您嘗試從用戶那里獲取輸入時,您可以使用.upper() 此方法將字符串中的所有小寫字母轉換為uppercase 所以你可以在 if 語句中使用y而不是"y""Y"

我認為您唯一要更改的行是:

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

由於您至少需要一個匹配項,因此定義此 function:

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):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM