【関数・メソッド・プロパティ設定をつかう】

1 文字列の左端から一部の文字列を取得

2 文字列の右端から一部の文字列を取得

3 文字列の指定位置から指定文字分の文字列を取得

4 三つのブラケットスライス書式をつかう

5 文字列の指定位置から1文字を取得

6 文字列の文字数を取得

7 文字列のループで1文字ずつ分解

三つのブラケットスライス書式をつかう

 Pythonでは、ブラケット[]をつかうと、文字列の中から指定位置の文字を取り出すことができます。

 これまでに、ブラケットLeftスライス書式ブラケットMidスライス書式ブラケットRightスライス書式

 といった三つのブラケットスライス書式をつかってみました。


 PythonのブラケットLeftスライス書式をつかうと、

 対象となる文字列左端から終了位置のインデックスまでをスライスした(切り取った)文字を取り出す

 ことができます。

Img7_1_11

 PythonのブラケットMidスライス書式をつかうと、対象となる文字列

 開始位置のインデックスから終了位置のインデックスまでをスライスした(切り取った)文字を取り出す

 ことができます。

Img7_1_31

 PythonのブラケットRightスライス書式をつかうと、

 対象となる文字列開始位置のインデックスから右端までをスライスした(切り取った)文字を取り出す

 ことができます。

Img7_1_21

 ブラケットLeftスライス書式ブラケットMidスライス書式ブラケットRightスライス書式

 全ての引数にセルの値を当てはめてみます。

 対象となる文字列:StringにセルA2の値

 ブラケットLeftスライス書式第2引数:終了位置のインデックスにセルD2の値を、

 ブラケットMidスライス書式第1引数:開始位置のインデックスにセルC3の値

                      第2引数:終了位置のインデックスにセルD3の値を、

 ブラケットRightスライス書式第1引数:開始位置のインデックスにセルC4の値を、

                      当てはめます。


 文字列の順番と先頭からの文字の位置及び最後尾からの文字の位置を示すインデックスの関係は、

 次のようになります。

Img7_1_32

 予め、次のようなExcelシート『sheet10』を用意して、

 Excelブック名を『WkBook1.xlsx』として保存します。

Img7_1_41

 この『WkBook1.xlsx』の『sheet10』を読みこみます。

 xlwingsをつかいPythonで既存Excelを読みこみ操作するときは、

 Workbookファイルをメモリ上に読みこむと同時にWorkbookオブジェクトを生成、

 ( 『xlwingsをつかい既存Workbookを読みこみファイル保存』参照 )

 更に、sheetオブジェクトを生成して、そのsheetを操作します。

 Workbookオブジェクト名を『wb』、sheetオブジェクト名を『st』とします。


 ソースコードパネルに

import xlwings

wb = xlwings.Book('WkBook1.xlsx')

st = wb.sheets['sheet10']

 と記述しておきます。


 変数『txt』にセルA2の値を格納

txt = st.range('A2').value


 ブラケットLeftスライス書式をつかったコードは、

 st.range('E2').value = txt[:int(st.range('D2').value)]

 ブラケットMidスライス書式をつかったコードは、

 st.range('E3').value = txt[int(st.range('C3').value):int(st.range('D3').value)]

 ブラケットRightスライス書式をつかったコードは、

 st.range('E4').value = txt[int(st.range('C4').value):]

 と記述します。

 【ソースコードパネル】

# ブラケットスライス書式まとめ

import xlwings

wb = xlwings.Book('WkBook1.xlsx')

st = wb.sheets['sheet10']

txt = st.range('A2').value

# ブラケットLeftスライス書式

st.range('E2').value = txt[:int(st.range('D2').value)]

# ブラケットMidスライス書式

st.range('E3').value = txt[int(st.range('C3').value):int(st.range('D3').value)]

# ブラケットRightスライス書式

st.range('E4').value = txt[int(st.range('C4').value):]

 それでは、そのPythonプログラムを実行してみます。


Img7_1_43

 『セルを思いのままに動かそう』の左端から『3』文字分の文字列が取り出されて

 セルE2に『セルを』と書きこまれました。

 『セルを思いのままに動かそう』の『4』文字目から『9』文字目までの文字列が取り出されて

 セルE3に『思いのままに』と書きこまれました。

 『セルを思いのままに動かそう』の右端から『4』文字分の文字列が取り出されて

 セルE4に『動かそう』と書きこまれました。



 試しに、対象文字列:セルA2

 ブラケットLeftスライス書式の文字数を取り出す終了位置:セルD2

 ブラケットMidスライス書式の文字数を取り出す開始位置:セルC3、文字数を取り出す終了位置:セルD3

 ブラケットRightスライス書式の文字数を取り出す開始位置:セルC4

 の値を適当な文字や数字に書きかえて、Pythonプログラムを実行して、

 ある文字列から一部の文字列を自由自在に取得することができる

 ことを確かめてみてください。