我在Python shell中工作。为了生成所有全局名称的列表,我使用 dir (),但它生成了一个很长的列表,我想过滤它。我只对以'f'开头并以数字结尾的名字感兴趣。有时我也只需要用户定义的名称,没有__*__
名称。在Python shell中是否有类似grep的方法来过滤其输出?
答案 0 :(得分:2)
[name for name in dir() if name.startswith('f') and name[-1].isdigit()]
示例:
>>> f0 = 7
>>> [name for name in dir() if name.startswith('f') and name[-1].isdigit()]
['f0']
答案 1 :(得分:2)
>>> import re
>>> [item for item in dir() if re.match(r'f.*\d+$',item)]
或
>>> [item for item in dir() if re.search(r'^f.*\d+$',item)]
答案 2 :(得分:1)
[n for n in dir() if re.match("f.*[0-9]$", n)]
我将PYTHONSTARTUP环境变量设置为指向~/.startup.py
,其中包含:
# Ned's startup.py file, loaded into interactive python prompts.
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")
def dirx(thing, regex):
return [ n for n in dir(thing) if re.search(regex, n) ]
pp = pprint.pprint
现在我总是导入一些方便的模块,并且我可以在shell中经常使用快捷方式。