-2

各アルファベット文字を HIDDEN 文字に置き換えて、指定されたパズルを返す必要があります。

HIDDEN = '^' 

def blah(r):
    r = HIDDEN * len(r)
    return r

この関数は、必要な文字列を置き換えるために機能しますが、質問では、各アルファベット文字を置き換えるように具体的に求めています。

したがって、HIDDEN はアルファベット文字ではないため、HIDDEN を持つことは4でき'ません。?

これについてどうすればよいですか?

4

4 に答える 4

8

1 つの方法: translateメソッドを使用します。

import string

table = string.maketrans(string.ascii_letters, '^'*len(string.ascii_letters))

def blah(r):
    return r.translate(table)

別のアプローチ: 使用re.sub:

import re

def blah(r):
    return re.sub(r'[a-zA-Z]', r'^', r)
于 2012-10-19T02:29:05.470 に答える
2

maketransを確認してください。 からstring.lettersへの変換テーブルを作成して^使用できます。

于 2012-10-19T02:29:53.317 に答える
1

私はいつもmaketrans理解するのが少し難しいと思っていたので、私は通常、これらのことを行うためのより原始的な方法に頼ります(これは私にとってより理にかなっています):

def make_hidden(instr):
    return ''.join(c if c.isalpha() else '^' for c in instr)
于 2012-10-19T02:49:29.757 に答える
1

各アルファベット文字を HIDDEN 文字に置き換えて、指定されたパズルを返します。

HIDDEN = '^' 

def blah(r):

    new_r = ""

    for ch in r:

        if ch in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':

           new_r += HIDDEN 

        else:

           new_r += ch

     return new_r
于 2012-12-09T01:32:38.220 に答える