我正在尝试检查用户输入的字符串是否包含在其他字符串的列表中以及这些字符串的任何排列,以“*”分隔。
换句话说,这是我目前的代码:
user_string=raw_input("Please supply a string")
viable_entries=['this', 'that', 'something else']
if user_string in viable_entries:
print "here I'd move on with my script"
如果 user_string = "something else*this"或 "this*that"等,我还想打印“here I'd move on with my script”。
是否有一种简单的 Pythonic 方式来做到这一点?
请您参考如下方法:
您可以拆分输入并使用 set.issubset:
if set(user_string.split('*')).issubset(viable_entries):
...
请注意,即使重复输入 ("this*this"),这也会给出 True。如果你想阻止用户提供重复的条目,你可以使用 len(set):
entries = user_string.split('*')
if set(entries).issubset(viable_entries) and len(set(entries)) == len(entries):
...
