我有一个字符串列表: 如何返回字符串以'低'结尾或以'高'结尾或以'NQ _'开头?
list=[
'ES_Low',
'NQ_High',
'NQ_Low',
'NQ_Close',
'NQ_Volume',
'GC_Open',
'GC_High',
'GC_Volume']
AnswerDesired=[
'ES_Low',
'NQ_High',
'NQ_Low',
'NQ_Close',
'NQ_Volume',
'GC_High']
答案 0 :(得分:2)
如评论中所述:这里并不需要正则表达式。
lst=[
'ES_Low',
'NQ_High',
'NQ_Low',
'NQ_Close',
'NQ_Volume',
'GC_Open',
'GC_High',
'GC_Volume']
def cleanse(item):
if item.endswith('Low') \
or item.endswith('High') \
or item.startswith('NQ_'):
return True
desired = list(filter(cleanse, lst))
print(desired)
# ['ES_Low', 'NQ_High', 'NQ_Low', 'NQ_Close', 'NQ_Volume', 'GC_High']
另外请参阅a demo on ideone.com。
<小时/> 当然,使用正则表达式也可以实现相同的目的:
import re
rx = re.compile(r'(?:^NQ_)|(?:(?:Low|High)$)')
desired = [item for item in lst if rx.search(item)]
print(desired)
# ['ES_Low', 'NQ_High', 'NQ_Low', 'NQ_Close', 'NQ_Volume', 'GC_High']
答案 1 :(得分:1)
希望这段代码可以做到,
import re
list=['ES_Low','NQ_High','NQ_Low','NQ_Close','NQ_Volume','GC_Open','GC_High','GC_Volume']
for i in list:
if (re.search("^NQ_|Low$|High$", i)):
print i
输出:
ES_Low
NQ_High
NQ_Low
NQ_Close
NQ_Volume
GC_High