[Python] 基礎-4 文字列処理

1.文字列データ

文字列データ:シングルまたはダブルクォーテーションで囲む ’・・・・・・’ OR “・・・・・・”

エスケープ文字

バックスラッシュ「\」+文字で特別な意味を持つ文字(制御文字など)を表す
注:バックスラッシュ「\」は円マーク「¥」で表示されることもある

エスケープ文字意味
\’シングルクォーテーション
\”ダブルクォーテーション
\tタブ
\n改行
\\バックスラッシュ

raw文字列

r」で始める
r’任意の文字列(エスケープ文字を含んでもよい):そのままの文字列として扱われる

複数行

三連クォートで囲む:”””・・・複数行・・・””” OR ’’’・・・複数行・・・’’’

2. インデックスとスライス

文字列全体を、構成する各文字を要素とするリストとして扱う。インデックスを使って文字単位、スライスを使って複数文字の範囲単位でアクセスできる。

文字列Hello world!
インデックス01234567891011

3.文字列データに対する演算

演算

: 結合、:繰り返し

in / not in 演算

検査文字列 in 検査対象文字列  ⇒ 戻り値=True/False
検査文字列 not in 検査対象文字列  ⇒ 戻り値=True/False

4. メソッド(文字列データ専用の関数のようなもの)

  メソッド 内容
upper()大文字に変換
lower()小文字に変換
isupper()(検査) すべてが大文字のときTrue
islower()(検査) すべてが小文字のときTrue
isalpha()(検査) すべてが英文字のときTrue
isalnum()(検査) すべてが英字または数字のときTrue
isdecimal()(検査) すべてが数字のときTrue
isspace()(検査) すべてがスペース、タブまたは改行のときTrue
istitle()(検査) 大文字から始まり他が小文字の単語で構成されているときTrue
startswith(検査値)(検査) 検査値の文字列から始まるときTrue
endswith(検査値)(検査) 検査値の文字列で終わるときTrue
rjust(文字数[,文字])(整形) 指定した文字数に右詰、他は指定した文字*1)で埋める
ljust(文字数[,文字])(整形) 指定した文字数に左詰、他は指定した文字*1)で埋める
center(文字数[,文字])(整形) 指定した文字数に中央揃え、他は指定した文字*1)で埋める
rstrip([文字])(整形) 右端から指定した文字*2)を除去
lstrip([文字])(整形) 左端から指定した文字*2)を除去
strip([文字])(整形) 両端から指定した文字*2)を除去
*1):[,文字]を省略したときは空白で埋める
*2):[文字]は複数の文字を指定してよい。文字列ではなく順不同の各文字として扱う

split()メソッド

対象の文字列を、指定した文字で分割して、リストを返す

例:特許ファミリー ”CN1394363A;EP1274140A;特開2001-291512;WO2001078167A” は、セミコロン”;”で区切られているので、split(“;”)を使うと各国公報番号のリストを得られる

この例の他、以下のような例がある
・複数行の文章から、改行マークによって段落ごとにわけたリストを作成
・複数行の文章から、ピリオド+空白によって文ごとにわけたリストを作成

join()メソッド

リストで与えられる複数の文字列を指定する文字で連結して、長い文字列を返す

例:上の例の逆に、family_listがあるときに、指定した文字(例えば「と、」)で連結する]

replace()メソッド

対象の文字列に含まれる「検査文字列」を「置換文字列」に置き換える

「改行」など特殊な文字(列)も扱える

[Python] 基礎-3 関数定義(サブルーチン)

ユーザー自身によって定義できる「関数」(サブルーチンやファンクション定義に相当する)

def 関数名 ( 引数 ):
←字下げ→関数の処理の内容
←字下げ→return( 戻り値 )
関数を使う処理

・ 関数を使う(参照する)処理が実行される前に定義(Pythonはインタプリタで処理)
・ 変数はローカル(同じ関数定義の中だけで値が保持される)
・ グローバル変数(関数定義の外側の変数)を参照・変更したい場合は、global文を使う

global文

複数の戻り値は、タプル型で戻る

[Python] 基礎-2 リスト、タプル、辞書

他の言語でいう「配列」に相当
リスト:[要素1,要素2,・・・]:先頭から順に、0, 1, ・・・とインデックスされる
タプル:(要素1,要素2,・・・):要素の変更、追加、削除、並べ替えなどできない
辞書:{キー1:要素1,キー2:要素2,・・・}:キーと値との対の集合

1.リスト

1.1 インデックスによる指定

list = [A, B, C, ・・・Z](要素数=26個)のとき、
インデックスは 0~25 さらに -26~-1 も使える。

インデックスの範囲は、-4~3。list[4]は範囲外でエラー(In[5])。

1.2 リストの編集

リストの長さの取得、要素の値の変更、リストの結合(要素の追加)、要素の削除など、演算式や関数を使って行うことができる。

リストの初期化

1.3 多次元のリスト

リストの要素はリストでもよい。多次元配列を作れる。

多次元配列の初期化

1.4 要素の有無を検査

検査値 in/ not in リスト:リストの要素の中に検査値の要素があるかどうかを調べる。

1.5 forループ

for 各要素を入力する変数 in range(リスト):リストを構成する各要素について、同じ処理を繰り返すようなプログラムに使える。

1.6 メソッド

リスト型オブジェクトを扱うことができるメソッド

2.タプル

リストとほぼ同じだが、値の変更や要素の編集はできない。
[ ・・・ ] に代えて、丸括弧 ( ・・・ ) で記述

list(タプル):タプルをリストに変換
tuple(リスト):リストをタプルに変換

エラーの原因不明!!

3.辞書

辞書: 各要素についてキーを組にして登録する形式のデータ
辞書={キー1:値1, キー2:値2, キー3:値3, ・・・・・・}

keys()メソッド:辞書からキーを取り出す
values()メソッド:辞書から値を取り出す
items()メソッド:辞書からキーと値の組を取り出す。出力はタプル (キー, 値)

in / not in :キーや値が辞書に存在するかどうかの判定

get()メソッド:キーを指定して値を出力。第2引数は指定したキーが存在しないときに出力する値・・・指定したキーが存在していなくてもエラーにならない点がメリット

辞書に要素を追加する
辞書 [追加するキー] = 追加する値
・・・「追加するキー」が辞書になければ「追加する値」追加されるが、
・・・もともとあった「追加するキー」の値が「追加する値」に上書きされる

setdefault()メソッド:第1引数で指定したキーがないとき、第2引数の値を追加
・・・・・・・・・・第1指定したキーがあればその値を出力、第2引数は無視

その他

  • 辞書の中にリストや辞書を含んでもよい
  • pprintモジュールをインポートすると、きれいに表示できる

 

[Python] 基礎-1 データ入出力, 演算, if文, whileループ, forループ

1.入出力

 コマンド 説明 例
input()標準デバイス(コンソール)からの入力string = input(“Enter string…..”)
print()標準デバイス(コンソール)への出力print(string)

実行例

「入出力の実行例」のブロックは、”Markdown”として入力。解説など。
“string=input(“Enter…”などのpythonのコードは、”Code”として入力。上の▶をクリックすると実行される。

入力待ちになる・・・入力すると・・・
入力した文字列がそのまま出力される。

2.データ型,演算,変数宣言

2.1 データ型

データ型記号
整数int-1, 0, 1, 2, 100
浮動小数点float-1.25, -1.0, 1.38, 3.14,
文字列str“a”, “Hello”, “2020/1/1”
他にもたくさんの型がある。例えば、ブール型=True/False,値がない=None

変数の型宣言は不要・・・代入した値に応じて決まる。
演算の結果などで、データ型が変わるときには、変換する。

2.2 演算

優先演算子説明
1**累乗3**4=81
2*乗算,文字列の繰り返し3*4=12, “Hi! “*3=”Hi! Hi! Hi!”
2/除算3/4=0.75
2//整数除算4/3=1
2%剰余4%3=1
6+加算,文字列の連結4+3=7,
“Hi!”+”How are you?”=”HiHow are you?”
6減算4-3=1
累積加算 ”+=”: i +=1 ・・・i=i+1

2.3 Jupyter Notebookでの実行例

3.If文

if 条件 :
条件が成立したときに実行する命令
else:
条件が成立しなかったときに実行する命令

・if文、else文(省略可)、elif文(後述)は,コロン”:”で終わる
・条件が成立/不成立のときに実行する命令は複数でもよく、字下げで区別する
・条件の書き方は、下の演算子を使う

 演算子  意味
== 等しい
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上
is None Null(空)データかどうかの判定  

複数の演算子を使うこともOK
 例: ” if 3<= x < 10: “

if文の実行例(単純なif文)

“>=”で、型の違うデータを比較しているというエラー

入力されたデータは、一律、文字列型になるらしい。データ型を整数型に変換する。

データ型の変換

  関数   説明
int() 整数型に変換 
float() 浮動小数点型に変換
str() 文字列型に変換

if文の実行例(if/else文)

入力しないでEnterすると、in_strは””になって条件が成立し、”Please!….”が出力され、[10]
何か文字を入力すると、入力された文字列が出力される。[11]

if文の実行例(if/elif…elif)

入力される年齢(age)によって、グループ分けするような処理。

4.whileループ,forループ

while 条件:
条件が成立している間、繰り返し実行される命令
whileループが終了した後、実行される命令

・「条件が成立している間、繰り返し実行される命令」(複数でもよい)と
 「whileループが終了した後、実行される命令」とは字下げで区別する。
・強制的にループから抜ける命令=break
・強制的にループの先頭に戻る命令=continue
・無限ループの強制終了=Ctrl+C / [Shell]→[Restart Shell]

whileループの実行例

for i range(n):
条件が成立している間、繰り返し実行される命令
whileループが終了した後、実行される命令

・range関数により i = 0~n-1 まで繰り返し実行
・「条件が成立している間、繰り返し実行される命令」(複数でもよい)と
 「forループが終了した後、実行される命令」とは字下げで区別する。
・強制的にループから抜ける命令=break
・強制的にループの先頭に戻る命令=continue

range関数:range([開始値, ]終了値+1[, 増分])
・開始値と増分は省略可

forループ実行例

“range(5)なので0から4まで
上のwhileループと同じ動作をさせたいときは、開始値=1と、終了値+1 = 6 を指定
増分 = 2 を指定すると、終了値を超えるまで繰り返す

 

[Python] 開発環境の準備

《 Anaconda 》
Pythonの開発環境を構築するため、Anacondaをインストール。
教科書(Al Sweigart著,相川愛三訳,「退屈なことはPythonにやらせよう」,O’REILLY Japan)で勧められていたので、素直に従った。使ってる人も多いようだし、内包しているパッケージ(モジュール)も充実しているそうだ。

Anacondaの公式サイト(https://www.anaconda.com/)からダウンロード

自分のPCに合ったものをインストール
Python 3.7 (これから勉強なので、新しいバージョンが良いだろう)の
Windows 64-bit版(Mac, Linuxの方が相性がよさそうだが、特許検索ツールがWindows環境なので、Windows PCを選択)

インストールしたAncondaを起動してみるとこんな感じ。

Jupyter Notebookと、Spyderと、Prompt(コマンドプロンプト)を使っている。

《 Jupyter Notebook 》
Jupyter Notebookは、メモ的な文章とpythonコードを混在して書き込めて、書き込んだpythonコードはそのまま実行できるので、初心者にはありがたい。

Jupyter Notebookを使ってグラフを描いてみているところ。

《 Spyder 》
ちょっと複雑なプログラムを書き始めてから使うようになったプログラム開発環境。
右上のウィンドウで変数の値をモニターしながら、プログラムを1行ずつ実行するなど、デバッグに便利。

《 Prompt 》
呼び方はいろいろで、「コマンドプロンプト」「コンソール画面」など。
コマンドを1行ずつ実行する。
主な使い道は、モジュールのインストールと、Anacondaの各パッケージのバージョンアップ。

〈 モジュールのインストール 〉
pythonはプログラムによって使うモジュールが違う。
例えば
 Excelファイルを扱うなら”openpyxl”
 csvファイルを扱うなら”csv”

コマンドラインに、”pip install モジュール名” を入力して実行。

〈 Anacondaの各パッケージをバージョンアップ〉
Spyderなど各パッケージは、随時アップデートされている。常に新しいバージョンに更新していくことがお勧めかどうかはわからないが、できるだけ最新バージョンにしている。

PCへのアクセス権限の関係で、管理者として実行している。
コマンドラインから”sudo conda update –all”でも良いのかも。(”sudo”はsuper user=管理者としてdo=実行)