将打印输出连接到变量

时间:2015-02-20 01:55:31

标签: python regex

所以我得到了这个......并打印出预期的内容。我现在需要将打印输出存储到变量中。有关如何清理它的任何指示/想法?

re1='(Tag)' # Word 1
re2='.*?'   # Non-greedy match on filler
re3='((?:[a-z][a-z]*[0-9]+[a-z0-9]*))'  # Alphanum 1
re4='(.)'   # Any Single Character 1
re5='((?:[a-z][a-z]+))' # Word 2

rg = re.compile(re1+re2+re3+re4+re5,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
    var1=m.group(1)
    alphanum1=m.group(2)
    c1=m.group(3)
    word1=m.group(4)
    print ""+""+alphanum1+""+""+c1+""+""+word1+""+"\n"

2 个答案:

答案 0 :(得分:2)

以下是一些可能有用的事情:

  • re.VERBOSE标志(与re.X相同)忽略空格和注释。这样可以更容易地记录您的表达。

  • (?P<name>expr):在{"name": "expr"}中返回match.groupdict()。这样可以更轻松地使用结果。

  • str.format将接受命名变量,即"{this}".format(this = 5)

  • 您可以使用**dict运算符将dict解压缩到命名变量。

将这些放在一起,你得到:

reg = re.compile(
    """
        (?P<word1>tag)                       # word1
        .*?                                  #
        (?P<alphanum>[a-z]+[0-9]+[a-z0-9]*)  # alphanum
        (?P<ch>.)                            # ch
        (?P<word2>[a-z]{2,})                 # word2
    """,
    re.I | re.S | re.X
)

m = reg.search(txt)
if m:
    s = "{alphanum}{ch}{word2}".format(**m.groupdict())
    print(s)

答案 1 :(得分:0)

您可以使用StringIO捕获所有输出。

from StringIO import StringIO
backup = sys.stdout
sys.stdout = StringIO() 
... your code  ...
val = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = backup

您的输出将在val