Python - как отфильтровать вывод в оболочке Python по-гречески? - PullRequest
3 голосов
/ 12 сентября 2011

Я работаю в оболочке Python. Чтобы создать список всех глобальных имен, я использую dir (), но он генерирует очень длинный список, который я хотел бы отфильтровать. Меня интересуют только имена, которые начинаются с 'f' и заканчиваются цифрами. Иногда мне также нужны только определенные пользователем имена, без имен __*__. Есть ли grep-подобный метод в оболочке Python для фильтрации выходных данных?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011
>>> 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 голосов
/ 12 сентября 2011
[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 голос
/ 12 сентября 2011

[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

Теперь у меня всегда есть несколько импортированных удобных модулей, и у меня есть ярлыки для вещей, которые я часто делаю в оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...