home changes contents help options

068:文字列の一部を特定の文字で埋める

Password: PythonRecipe のようなテキストを Password: ******** に置き換えるコードです。

# coding: utf-8

import re

def hide(pattern, string, rep=u'*', hide_group=1):
    u"""正規表現 pattern の hide_group 部分を rep に置き換える

    >>> hide(u'Password: (.*)', u'Password: PythonRecipe')
    u'Password: ************'
    >>> hide(u'ham', u'spam ham eggs', hide_group=0)
    u'spam *** eggs'
    >>> hide(ur'(?P<year>\d+)-(?P<month>\d{1,2})-(?P<day>\d{1,2})',
    ...      u'2009-12-09', hide_group='month')
    u'2009-**-09'
    """

    r = re.compile(pattern)

    m = r.search(string)
    if not m:
        raise ValueError(u'No match')

    start, end = m.span(hide_group)

    return u''.join([
        string[:start], (end - start) * rep, string[end:]])

def hide_password(string):
    u"""パスワード部分を隠す

    >>> hide_password(u'Password: PythonRecipe')
    u'Password: ************'
    """

    return hide(u'Password: (.*)', string)