Python入門
自分がPythonを学習し始めて数か月が経ちました。最初はAIとか機械学習とか面白そうと思って学習し始めたのですが、クローリングとスクレイピングに興味がわき以前作ったようなヤフオク落札履歴検索ツールや【python】メルカリ再出品ツールを作ってみたやら記事にはしてないけどTwitterで特定ユーザーのフォロワーをフォローするツールを作ったりしてました。
ある程度クローリング&スクレピングの技術はそこそこ使えるようになったので、今まで学習したことを忘れた時の為や、誰かが学習する時に役に立つ様に基本からアウトプットすることにしました。内容は学習するときに買った本を基に作成します。
文字列について
開発をしていない人からよくわからないと言われる言葉の一つ「文字列」。
文字列はそのまま文字が連なって「文字が列になったもの」の事です。pythonでは文字列をダブルクォートでこの様に「”abc”」と括って表します。
文字列はそのまま文字が連なって「文字が列になったもの」の事です。pythonでは文字列をダブルクォートでこの様に「”abc”」と括って表します。
文字列の表現方法
文字列はダブルクォートで括って表すと書きましたがシングルクォート「’abc’」で括って表しても同様です。どちらも記号が違うだけで同様に使用できます。
実際に使用するときはこんな感じになります。
実際に使用するときはこんな感じになります。
1 2 3 4 5 |
# ダブルクォートで文字列を表現する場合 print("Hello python") # シングルクォートで文字列を表現する場合 print('Hello python') |
どちらも同じ結果になるのであれば、何のためにダブルクォートとシングルクォートの2つも表現方法があるのでしょう?それは文字列を表現する時にダブルクォート、シングルクォートを使用したい場合がある時の為です。文字列の中でダブルクォートを使用する時はシングルクォートで括り、シングルクォートを使用する時はダブルクォートで括るという事が出来るからです。どちらも使用しない場合は、どちらで括っても良いですが普段はこっちと決めておくと良いでしょう。個人的に普段はダブルクォートを使っています。
特殊な記号を使うとき
しかし、文字列を使用する時にダブルクォート、シングルクォートの両方を使用したい場合はどうしたら良いでしょう?どちらも使用するので、どちらかで括るという事は出来ません。
そのような場合は「エスケープシーケンス」という特殊な記号を使います。
エスケープはWindowsでは半角の円マーク「¥」(他では「バックスラッシュ(\)」)を使用します。エスケープシーケンスを使用するとダブルクォート、シングルクォートは括る為ではなく文字列の一部として使用できます。他には改行やタブといった特殊な文字を使用することが出来ます。文字列内に改行やタブを使用する場合などにも使用します。
そのような場合は「エスケープシーケンス」という特殊な記号を使います。
エスケープはWindowsでは半角の円マーク「¥」(他では「バックスラッシュ(\)」)を使用します。エスケープシーケンスを使用するとダブルクォート、シングルクォートは括る為ではなく文字列の一部として使用できます。他には改行やタブといった特殊な文字を使用することが出来ます。文字列内に改行やタブを使用する場合などにも使用します。
比較的よく使われるものにはこのようなものがあります。
記号 | 意味 |
\(改行) | 改行を無視する |
\\ | バックスラッシュ(\) |
\’ | シングルクォート(‘) |
\” | ダブルクォート(“) |
\r\n | 改行(CR+LF) |
\n | 改行(LF) |
\t | タブ |
※改行を表す記号で「\r\n」と「\n」の2種類があります。通常「\r\n」はWindows、「\n」はUnix/OSで使われています。
複数行に渡る文字列を扱う場合
文字列を複数行に渡って表示することもあります。その時は三重引用符(“””)を使います。
三重引用符はダブルクォート、シングルクォートを3連続で使用する事です。
三重引用符はダブルクォート、シングルクォートを3連続で使用する事です。
例えば以下のような文章を表示させたいと思った時に使用します。
「今日は良い天気です。
でも、明日は雨です。」
でも、明日は雨です。」
この文章を表示したい場合にはプログラムでは以下のように記述します。
1 2 |
print("""今日は良い天気です。 でも、明日は雨です。""") |
この様に記述することで2行に渡って文字列を表示することができます。
まぁ、こんな風にしてしまうとプログラムがかなり見づらくなってしまうので、実際にはこんな記述はしません。
プログラムは自分はもちろんですが、他人が見ても分かりやすく記述することが大事です。
仕事をする際は、プログラムは自分だけが見るものではないので、誰が見ても分かりやすく作ることが大事です。なかなか難しいですけど・・・
文字列同士の連結
文字列を扱う際に複数の文字列を連結して表示させたりすることが多々あります。
文字列同士は「+」で結合することが出来ます。
例えば前例の複数行に渡る文字列を表示する場合などはこのようにします。
この様に連結して1行で記述するとかなり見やすくなります。複数行にするために「”\r\n”」を使い改行を行っています。エスケープシーケンスはこの様に使う事が出来ます。
文字列同士は「+」で結合することが出来ます。
例えば前例の複数行に渡る文字列を表示する場合などはこのようにします。
1 |
print("今日は良い天気です。" + "\r\n" + "でも、明日は雨です。") |
文字列に変数の値を埋め込む
勿論、文字列に変数の値を埋め込んで使用したり、結合したりする事も出来ます。
例えばインチをセンチメートルに変換して表示するようなプログラムを作ったとします。
例えばインチをセンチメートルに変換して表示するようなプログラムを作ったとします。
1 2 3 4 5 6 7 |
# インチをセンチメートルに変換 per_inch = 2.54 inch = 39 cm = inch * per_inch # 説明文を加える desc = str(inch) + "インチ = " + str(cm) + "センチ" print(desc) |
ここでちょっと不思議なことをしています。
6行目でstr(inch)とstr(cm)という事をしています。
最初に文字列の表現方法で「ダブルクォート、シングルクォートで括ったものが文字列」と書きました。では、上記にあるような「2.54」「39」といった括っていないものはなんでしょう?
答えは「数値」です。
文字列と数値はプログラム上では全く違った扱いをします。この考え方も初心者には分かりにくい事の一つです。
問題のstr(inch)とstr(cm)は何なのかというと、変数inchとcmをそれぞれ文字列に変換しています。変数をstr()で括弧の中に括ることで文字列として扱うことが出来るようになります。
どうしてこういう事をするかというと、詳しいことは変数の型について記載する時に書こうと思いますが、数値は主に計算に使用し文字列は主に画面表示に使用したりする為、役割が分かれているという事です。
従って例のプログラムではprint(desc)で画面に表示している為、使用するのは文字列でなければいけません。試しに数値のままprintしようとするとプログラムが実行できずエラーになります。なのでstr(inch)とstr(cm)でそれぞれ数値を文字列に変換しているのです。
この変数の型を変換することを「キャスト」すると言います。
話が少し逸れましたが、このようにして文字列に変数を埋め込んで使用することが出来ます。
6行目でstr(inch)とstr(cm)という事をしています。
最初に文字列の表現方法で「ダブルクォート、シングルクォートで括ったものが文字列」と書きました。では、上記にあるような「2.54」「39」といった括っていないものはなんでしょう?
答えは「数値」です。
文字列と数値はプログラム上では全く違った扱いをします。この考え方も初心者には分かりにくい事の一つです。
問題のstr(inch)とstr(cm)は何なのかというと、変数inchとcmをそれぞれ文字列に変換しています。変数をstr()で括弧の中に括ることで文字列として扱うことが出来るようになります。
どうしてこういう事をするかというと、詳しいことは変数の型について記載する時に書こうと思いますが、数値は主に計算に使用し文字列は主に画面表示に使用したりする為、役割が分かれているという事です。
従って例のプログラムではprint(desc)で画面に表示している為、使用するのは文字列でなければいけません。試しに数値のままprintしようとするとプログラムが実行できずエラーになります。なのでstr(inch)とstr(cm)でそれぞれ数値を文字列に変換しているのです。
この変数の型を変換することを「キャスト」すると言います。
話が少し逸れましたが、このようにして文字列に変数を埋め込んで使用することが出来ます。