删除不在列表中的单个字符子串

Removing Single Character Substring and Not in List

我可以有效地从 source_string 中删除单个字符,但是如何包含不删除列表 compass 中的单个字符的条件?

compass = ['N', 'E', 'S', 'W']
source_string = 'Florida W Campus A B CD'
' '.join([x for x in source_string.split() if (len(x)>1)])

>>> 'Florida Campus CD'

期望的结果:

>>> 'Florida W Campus'

编辑:我需要在字符串中添加多个字符 'Florida W Campus A B CD'

尝试:

>>> ' '.join([x for x in source_string.split() if (len(x)>1) or x in compass])
'Florida W Campus CD'

您可以使用:

compass = ['N', 'E', 'S', 'W']
addl_strs = ['A', 'B', 'CD']
keep_strs = set(compass).union(set(addl_strs))
' '.join(list(filter(lambda x:len(x) > 1 if x not in keep_strs else x, source_string.split())))

如果你想使用另一个列表,你可以添加更多的字符串并形成一个集合,看看它是否在那里检查长度。

compass = ['N', 'E', 'S', 'W']
source_string = 'Florida W Campus A B'
' '.join([x for x in source_string.split() if x in compass or (len(x)>1)])