0

だから私は基本的な問題を抱えています。たとえば、文字列入力を受け取る関数をユーザーに呼び出させます。この場合はリンゴとしましょう。したがって、関数 get_view は get_view('apples') と呼ばれ、その役割は、apples のすべての文字を非表示の文字に変換することです。 ^^^^^ ^^^^^^' など、私の問題は、以下のコードではすべての文字や数字などを変換しますが、hello world の間に存在する空のスペースを残さないことです。検討 (')。コードを完全に機能するように変更するにはどうすればよいですか?

コード:

def get_view(puzzle):

    view = puzzle
    length = len(puzzle)
    for index in range(0,length):
        if ((puzzle[index]) != '' or '-' ):
            view = view[: index] + HIDDEN + view[index+1:]

HIDDEN = '^' (定数)

ありがとう、ウェブサイトの新規<3

4

3 に答える 3

2

次のように、ほとんどの重要な文字列操作にre.sub()のような正規表現関数を使用します。

import re
print(re.sub("[a-zA-Z0-9_']", "^", "Hello world, what's up?"))
#                                   ^^^^^ ^^^^^, ^^^^^^ ^^?
于 2012-10-19T00:28:30.980 に答える
1

このようなことをしようとしていますか?

view = ''.join((HIDDEN if c.isalnum() else c) for c in puzzle)
于 2012-10-19T00:08:27.430 に答える
1

空白文字 (スペース、タブ、改行) を変更したくないと仮定すると、これは for ループを使用してそれを行う 1 つの方法です。

def get_view(puzzle, hide_char='^'):
    view = []
    for c in puzzle:
        if not c.isspace():
            view.append(hide_char)
        else:
            view.append(c)
    return ''.join(view)

別の方法 (そしてより良い方法) は、リスト内包表記を使用することです。

def get_view(puzzle, hide_char='^'):
    view = [c if c.isspace() else hide_char for c in puzzle]
    return ''.join(view)

あるいは単に:

def get_view(puzzle, hide_char='^'):
    return ''.join(c if c.isspace() else hide_char for c in puzzle)
于 2012-10-19T00:51:45.700 に答える