簡體   English   中英

Python正則表達式將列表解析為文本以進行響應

[英]Python regular expression to parse a list into text for a response

當我運行下面的代碼時,我得到:

    Thank you for joining, ['cars', 'gas', 'jewelry']but['bus', 'join'] are not keywords.

如何有效地將列表變成僅要打印的字符串? 我懷疑這次可能需要一個正則表達式...)

    import re   

    pattern = re.compile('[a-z]+', re.IGNORECASE)

    text = "join cars jewelry gas bus"
    keywordset = set(('cars', 'jewelry', 'gas', 'food', 'van', 'party', 'shoes'))
    words = pattern.findall(text.lower())
    notkeywords = list(set(words) - keywordset)
    keywords = list(keywordset & set(words))

        if notkeywords == ['join']:
            print "Thank you for joining keywords " + str(keywords) + "!"
        else:
            print "Thank you for joining, " + str(keywords) + "but" + str(notkeywords) + " are not keywords."

要將列表轉換為字符串,請使用str.join這樣

print "Thank you for joining keywords " + ",".join(keywords) + "!"

if notkeywords == ['join']:這不是比較列表元素的方法。

>>> mylist = [1,2]
>>> mylist == 1
False

您應該in運算符中檢查是否相等。

>>> mylist = [1,2]
>>> 1 in mylist
True

只需使用someString.join(list)

        if notkeywords == ['join']:
            print "Thank you for joining keywords " + ", ".join(keywords) + "!"
        else:
            print "Thank you for joining, " + ", ".join(keywords) + "but" + ", ".join(notkeywords) + " are not keywords."

如果我正確理解了您的問題,則需要在打印列表之前使用.join()字符串方法組合列表。

例如:

','。join(my_list)

將為您提供逗號分隔的輸出。 ','可以是您喜歡的任何分隔符。

暫無
暫無

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

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