1

string.index() を取得して、文字列内に既に配置されている文字のインスタンスを無視しようとしています。これが私の最善の試みです:

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

def save_alphabet(phrase):
    saved_alphabet = ""
    for item in phrase:
        if item in alphabet:
            saved_alphabet = saved_alphabet + str(phrase.index(item))
    return saved_alphabet

print save_alphabet("aAaEaaUA")

私が望む出力は「1367」ですが、最初のインスタンスしか見つからないため、item「1361」を出力しています。

これを行う最善の方法は何ですか?戻り値は文字列形式である必要があります。

4

1 に答える 1

2
>>> from string import ascii_uppercase as alphabet
>>> "".join([str(i) for i, c in enumerate("aAaEaaUA") if c in alphabet])
'1367'

正規表現ソリューション (この場合、正規表現は好まない)

>>> import re
>>> "".join([str(m.start()) for m in re.finditer(r'[A-Z]', "aAaEaaUA")])
'1367'
于 2013-06-04T09:37:29.660 に答える