删除不在列表中的单个字符子串
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)])
我可以有效地从 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)])