Python - 大文字を 1 に、小文字を 0 に置き換えます

okwaves2024-01-25  8

PHP コードに基づいて Python コードを構築しようとしています。 私が苦労しているのは、Python の三項演算子です。

タイトルにあるように、文字列内の大文字を「1」に置き換えたいと考えています。小文字は「0」で構成されます。

String1: 00X2I00000ABCDa
Expected result1: 111111111111110

PHP コード

$bits .= (!is_numeric($char) && $char == strtoupper($char)) ? '1' : '0';

これは完全な PHP スクリプトです

ありがとうございます!

"".join(["0" if i.is lower() else "1" for i in s])?

– クリス

2020 年 9 月 3 日 10:27

PHP コードが期待どおりの結果を得るという確信が持てません。

– アラニ

2020 年 9 月 3 日 10:29

正規表現ソリューションには興味がないと思いますか?

– ミックマックサ

2020 年 9 月 3 日 10:42

期待された結果が説明を満たしていません。大文字が X の場合、期待される出力ではなぜ 1 になるのでしょうか?

– 

user13824946

2020 年 9 月 3 日 10:54



------------------------

c = "00X2I00000ABCDa"
''.join(map(str, [1 if c.isupper() or c.isnumeric() else 0 for c in a]))

ここで、c は入力文字列です



------------------------

join() の使用:

s = '00X2I00000ABCDa'
print("".join(["1" if x.isupper() or x.isnumeric() else "0" for x in s]))

出力:

111111111111110



------------------------

単一の文字に対して期待どおりの結果を得るには、次のようにします。

bits += '0' if char.islower() else '1'

ただし、必要に応じて、文字列全体の変換をワンライナーで記述することもできます。

bits = ''.join('0' if char.islower() else '1' for char in string1)

これにより、次のようになります。

111111111111110

ただし、質問に示されている PHP コードが実際に期待どおりの結果をもたらすかどうかはわかりません。 Python に相当するものは次のようになります。

bits = ''.join('1' if not char.isnumeric() and char == char.upper() else '0'
               for char in string1)

次とほぼ同等:

bits = ''.join('1' if char.isupper() else '0'
               for char in string1)

これにより次のことが得られます:

001010000011110

それでは、お好きなものを選んでください...

(注: 英数字以外の文字など、考慮すべき他のケースがあるため、上記では「ほぼ同等」とだけ述べています。そうです。)



------------------------

結果も文字列として取得したいと仮定します。

string1 = '00X2I00000ABCDa'
result = "".join(["0" if i.islower() else "1" for i in string1])

print(result)
>>> '111111111111110'

これを詳しく説明すると、次のようになります。

「0」 i.is lower() が文字「」を含む文字列を作成する場合、 True を返す islower メソッドがある場合。小文字の文字列のみがこのプロパティを持ちます。

else "1"それ以外の場合は、「1」を含む文字列が作成されます。そして、文字列 string1 内の各項目 (単一の文字列) として i に対してこれを実行します。

これらすべてを [ ] 内に入れると、次の値のリストが作成されます。 ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0'、'0'、'1']

次に、空の文字列 '' に対して join メソッドを使用して、このリスト内のすべての単一文字列を単一の文字列に結合し、それを結果に割り当てます。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。