スキップしてメイン コンテンツに移動

Pythonで文字種類の判定

2022年12月10日のAtCoder ABC281のB問題で文字種類の判定がわからなかった。

これまでちゃんと理解しようとしなかったことを後悔した。

アプリなどでユーザーが入力することがある時に必須ですよね。

文字判定の種類は何があるのか?

文字判定の種類は何があるか書籍で確認してみました。

  • isalnum()
  • isalpha()
  • isascii()
  • isdecimal()
  • isdigit()
  • isnumeric()
  • isidentifier()
  • islower()
  • isupper()
  • istitle()
  • isprintable()
  • isspace()

違いがよくわからないものが結構あります。

isalnum():英数字

print('abc123'.isalnum()) # True
print('abc++'.isalnum()) # False

isalpha():英字

print('abcde'.isalpha()) # True
print('abc123'.isalpha()) # False

isascii():ASCII文字

print('abc'.isascii()) # True
print('あいう'.isascii()) # False

isdecimal():10進数

print('100'.isdecimal()) # True
print('0x64'.isdecimal()) # False

isdigit():数値

print('1234'.isdigit()) # True
print('1234.56'.isdigit()) # False

isnumeric():数値文字

print('百万'.isnumeric()) # True
print('million'.isnumeric()) # False

isidentifier():有効な識別子

print('abc_123'.isidentifier()) # True
print('abc-123'.isidentifier()) # False

islower():小文字

print('test'.islower()) # True
print('Test'.islower()) # False

isupper():大文字

print('TEST'.isupper()) # True
print('Test'.isupper()) # False

istitle():先頭文字が大文字

print('Atcoder Test'.istitle()) # True
print('AtCoder Test'.istitle()) # False

isspace():空白文字

print(' '.isspace()) # True
print('test'.isspace()) # False

isidentifierがいまいちわからないです。。

isdigit、isdecimalの違い

isdigit、isdecimal、isnumericの違いについて本に以下のようにありました。

”isdecimalはアラビア数字だけ認める、isdigitはそれに加えて上付き数字のような文字も含める、isnumericはさらに漢数字・ローマ字数字のような文字も含める。”

しかし、isdigitとisdecimalの違いはまだやっぱり理解できない。

↑このサイトにわかりやすくありました。

”isdigit メソッドは文字列中のすべての文字が数字で使われる文字で、かつ 1 文字以上ある場合に真を返します。”

なるほど。1文字か1文字以上かで違うようです。AtCoderの解説コードの使い方も納得です。

文字種類を判定が必要なのはすごいプログラマーだけだと思っていたのですが、こうしてみると必須ですね。

このブログの人気の投稿

TouchDesigerでmp4を書き出す(映像+音)

TouchDesignerの醍醐味は音と図形を連動できることだと思ってます。 私がTouchDesignerに惹かれたのは、この部分です。 ということで、音と図形の連動をやってみました。 こんな動画をつくりました。 ▼ 動画作成手順 まず、TouchDesignerで動画を作成します。 以下の手順で作成します。 ▼ ムービー ・[Circle TOP]で円をつくる ・[Transform CHOP]をつなげる ▼ サウンド ・[Audio File In]で音を取り込む(デフォルトの音を選んでます) ・[Audio Filter CHOP]の[Filter]で[Band Pass]を選択 ・[Math CHOP]の[Combine Channels]の[Maxinum]を選択 ・[Math CHOP]の[Range]の[To Range]を 0 ~ 100 にする ・[Null CHOP]をつなげる ▼ サウンドをスケールに反映する ・サウンドの[Null CHOP]をムービーの[Transform TOP]の Scale へつなげる ▼ 大きさを調整する ・背景用に[Constant CHOP]をつくる ・[Over TOP]をつくる ・[Over TOP]に[Transform TOP]と[Constant CHOP]をつなげる ・[Over TOP]の[Fixed Layer]を[Constant CHOP]に合わせる(この場合は Input2) 完成です。 ▼ mp4書き出し手順 これを書き出します。 ・[File]メニューから[Export Movie]を選択 ・サウンドの[Null CHOP]を[CHOP Audio]へドラッグ・アンド・ドロップ ・ムービーの[Null TOP]を[TOP Video]へドラッグ・アンド・ドロップ ・[Codec]の[MPEG4]を選択 ・[Filename]で保存先を選択 ・Render Movieの[Start]をクリック こんな感じです↓ これでMpeg4のファイルができていると思います。

BlenderデータをTouchDesignerに取り込みたい

Blenderで作ったものをTouchDesignerで扱いたいと思いました。 しかし、いろいろ調べたのですが、方法が見つからなくて苦労しました。 基本的すぎて誰も記事や動画にしないのかもしれません。。 参考にした動画 TDSW Youtube Academyを参考にしました。 無事に完了して、以下の画像のようになりました。 手順 Blenderで作ったものをTouchDesignerで扱うための方法は以下の手順です。 1.Blenderで作ったものを「obj」形式でエクスポート 2.objファイルをTouchDesignerにドラッグ・アンド・ドロップする 3.配置したSOPの右側を右クリックしてGeometoryCOMPを置く 4.CameraCOMPを置く 5.LightCOMPを置く 6.renderTOPを置く。自動的にGeometoryCOMP、CamaraCOMP、LightCOMPとつながる。 これでBlenderで作ったものをTouchDesignerで扱えるようになります。 ちなみに 3Dを扱うときの画面分割方法は、 ・左にいつもの作業画面 ・右上にGeometory Viewer ・右下にTop Viewer を置くといいようです。 右下は、Top Viewerを選択した後、OutTOPのDisplayをオンにすると表示されます。

TouchDesignerで画像と文字を書き出したい

TouchDesignerを勉強しています。 基本的なことはざっくりとやってみました。 今回は画像と文字を書き出したいと思います。 動画を書き出す TouchDesignerは動画がメインだと思うのですが、単純に画像を書き出すことってどうするんだろう?と思ったので、やってみました。 [Movie File in]で画像を読み込む [Level]で少し調整 画像と背景の[Constant]を[Over]で合わせる [Text]で文字を入れる [Over]でテキストと画像を合わせる [Null]で右クリックしてsave imageする Nullで画像を保存するとtiff形式になりました。 他にも書き出し方がありそうですがわからなかったので、今回はGIMPでpngにしました。 TouchDesignerって便利ですね。 動画も画像も音声もなんでもかんでもTouchDesignerでまとめることができそうです。