Python - 如何以类似grep的方式过滤python shell中的输出?

时间:2011-09-12 15:23:14

标签: python grep

我在Python shell中工作。为了生成所有全局名称的列表,我使用 dir (),但它生成了一个很长的列表,我想过滤它。我只对以'f'开头并以数字结尾的名字感兴趣。有时我也只需要用户定义的名称,没有__*__名称。在Python shell中是否有类似grep的方法来过滤其输出?

3 个答案:

答案 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中经常使用快捷方式。