[英]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.