聞きたいこと
- 私のコードだと
re.sub()
を2回書いているので、1回または1行の処理で済ませるスマートな書き方が知りたい。(または不可能な場合は、不可能であるということを知りたい) re.sub()
は使用しなくてもいいですが、正規表現を使いたい。
前提条件
'1'
と'0'
から構成される文字列を戻す関数をつくる。- 引数にはランダムな文字列が与えられる。
- 母音(aeiouAEIOU)は
'1'
、それ以外の全て(空白なども含む)は'0'
に置き換える。
例
引数に与えられる値 | 戻り値 |
---|---|
'amEricA' | '1010101' |
'123abc' | '000100' |
'Hello, world!' | '0100100010000' |
該当コード
python
1import re 2 3def vowel_one(str): 4 str = re.sub(r'[^aeiou]', '0', str, flags=re.IGNORECASE) 5 str = re.sub(r'[^\d]', '1', str) # 問題の部分。2行にわたってre.subを書いていて冗長的に感じる 6 return str
試したこと
正規表現を使用しない別バージョンは、1行で書けました。
python
1def vowel_one(str): 2 return ''.join('1' if c in 'aeiou' else '0' for c in str.lower())