Python入門(5.文字列)です。
文字列同士は+で結合できる(int型の+とは目的も機能も使い方も違う)。
print("Hog" + "e")
printでは自動的に改行が付加されるが、付加したくない時はend=''という引数を追加する。
print("Hog", end='') print("e")
文字列は、ダブルクオーテーション(")で囲っても、シングルクオーテーション(')で囲ってもいい。その代わり、"で囲った文字列は"で終わる必要がある。'~'の中には"を、"~"の中には'を含めることができるが、"~"の中に"を入れたい場合は\"のようにバックスラッシュでエスケープする必要がある。また、以下に示すようにr文字列やf文字列を使って\や"などの含めた文字列や内部で関数名を展開する文字列を書くこともできるし、複数行に渡って文字列を表すにはトリプルクォートを使う。
Pythonで変数の中身を表示するためには、フォーマット整形関数であるformat()を使用する。
x = 3 y = 10 print('{0}と{1}の平均は{2}'.format(x, y, (x+y)/2))
以下のサイトを参考に執筆・引用しました。
format()関数は、色んなことができる。通常、順番通りにひとつひとつ変数を出力するには、
x = 3 y = 10 print('{}と{}の平均は{}'.format(x, y, (x+y)/2))
とする。これに対して、数値を指定することもできる。
x = 3 y = 10 print('{0}と{1}の平均は{2}'.format(x, y, (x+y)/2))
同じ変数を使いまわすような場合は、数値を同じにする。
x = 3 y = 10 print('{0}+{1}={2}\n{0}-{1}={3}\n{0}*{1}={4}\n{0}/{1}={5}'.format(x, y, x+y, x-y, x*y, x/y))
変数に名前をつけることもできる。
animals = {'dog': '犬', 'cat': '猫'} print('dogは{dog}で、catは{cat}ですよ。'.format(dog=animals['dog'], cat=animals['cat']))
辞書を使う場合は、数値0に対してキーを設定するような使い方もできる。
animals = {'dog': '犬', 'cat': '猫'} print('dogは{0[dog]}で、catは{0[cat]}ですよ。'.format(animals))
また、左揃え・中央揃え・右揃えとか、最低の文字幅を指定して空いたスペースを空白で埋めるなどといった使い方もできる。+や-などの符号を数値につけて+の場合はひとつの空白で表現するなどといったこともできる。
print('{x:>6}と{y:>6}の平均は{result:>6}'.format(x=x, y=y, result=(x+y)/2))
ここでは、最低文字数が6で、右揃え(>が右揃え、<が左揃えを意味する)にしている。
また、format()関数で書式指定するのは比較的新しいやり方である。以前のやり方である%を使った書式指定を目にすることもある。
詳しくは以下を参照のこと。
また、上のformat()と同じ用途に使えるものとして、f文字列がある。f文字列では、{}の中の変数が展開される。
x = 3 y = 10 print(f'{x}と{y}の平均は{(x+y)/2}')
また、'(シングルクォート)の中では"(ダブルクォート)をそのまま書け、ダブルクォートの中ではシングルクォートをそのまま書けるが、シングルクォートの中で、シングルクォートを使ったり、ダブルクォートの中でダブルクォートを使ったりするためには、\(バックスラッシュ)をつける。
ただし、Windowsのディレクトリパスなどで、バックスラッシュをそのまま使いたい場合は、raw文字列(r文字列)を使うと便利である。
path_windows = r'C:\Windows' print(path_windows)
r文字列の中では、エスケープされた文字が付加的な意味を持たず、ただの文字として扱われる。
また、ヒアドキュメントのように改行を含めた文字列を表現したい場合は、トリプルクォートと呼ばれる機能が使える。
help_msg = ''' このプログラムの使い方は、 オプション1 : 説明1 オプション2 : 説明2 です。 ''' print(help_msg)
Pythonで自分以外のたくさんのユーザーが使うような関数を定義する場合、関数に説明をつける時に、docstringと呼ばれるドキュメントを作ることもある。この時、トリプルクォートを使う。
後日注記:トリプルクォートは複数行の文字列に使うほか、複数行に渡るコメントを表現するためにも用いる(一行コメントは#を使う)。
文字列を操作する関数としては、よく使うものとして、
関数 | 説明 |
---|---|
len() | 文字数を求める |
in演算子 | 文字列の中に文字が含まれてるかどうかを調べる |
find() rfind() index() rindex() | 文字列の含まれている場所を求める |
split() | 文字列を分割する |
join() | リストをひとつの文字列に結合する |
strip() lstrip() rstrip() | 空白文字を削除する |
replace() | 文字列を置換する |
などがある。Pythonでは文字列を変更することはできないため、「元の文字列をベースにして新しい文字列を作成する」といった動作になる。
詳しくは以下を参照のこと。
PythonスクリプトでUTF-8を使うためには、行頭の部分を以下のように記述する。
#!/usr/bin/env python # -*- coding: utf-8 -*-
(Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法 - Taku Yamanaka's Home Pageより引用。)
Pythonで正規表現を使うには、まずreモジュールをimportする。
import re
正規表現をコンパイルしてマッチさせるには、以下のようにする。
p = re.compile('ho*ge') m = p.match('hoooge fuuga') print(m.group())
re.match()でそのままマッチさせることもできるが、コンパイルして再利用したほうが何度も同じパターンを使う場合に効率的である。
p.match()はマッチしなかった場合はNone、マッチした場合はMatchオブジェクトを返す。Matchオブジェクトは、group()でマッチした文字列、start()でマッチした開始地点、end()でマッチした終了地点、span()でstartとend両方を含むタプルを得られる。
また、置換はp.sub()で行える。引数countを指定すると、その回数置換する(1ならば1回)。また、countが0あるいは指定されなかった場合はすべてのマッチした部分が置換される。
詳しくは以下が参考になる。
正規表現も参照のこと。