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

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

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

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

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

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

6 文字列の文字数を取得

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

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

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


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

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

 ことができます。

Img7_1_31

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

 次のようになります。

Img7_1_32

 ブラケットMidスライス書式では、

 第1引数:開始位置のインデックス第2引数:終了位置のインデックスを入れると、

 戻り値として、対象となる文字列

 指定した開始位置のインデックスから指定した終了位置のインデックスまでの文字列を取り出す

 ことができます。


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

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

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

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

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

 予め、ソースコードパネルに

import xlwings

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

st = wb.sheets['sheet']

 と記述しておきます。




(1) 取り出した文字列

 『セルを思いのままに動かそう』という文字列4文字目から1文字分の文字列を取り出して

 セルA2に格納してみます。


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

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

Img7_1_33

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

 ソースコードパネルを

import xlwings

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

st = wb.sheets['sheet7']

 と書きかえます。


 『セルを思いのままに動かそう』という文字列4文字目から1文字分の文字列を取り出して

 セルA2に格納します。

 ブラケットMidスライス書式をつかってみます。

 左辺には、戻り値として st.range('A2').value

 右辺には、対象となる文字列:Stringに『”セルを思いのままに動かそう”』

       第1引数:開始位置のインデックスに『3』

       第2引数:終了位置のインデックスに『4』

 を当てはめれば良いのだから、

 st.range('A2').value = "セルを思いのままに動かそう"[3:4]

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet7']

st.range('A2').value = "セルを思いのままに動かそう"[3:4]

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


Img7_1_34

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

 セルA2に『思』と書きこまれました。


演習(1):『セルを思いのままに動かそう』という文字列の

       4文字目から2文字分の文字列を取り出してセルA2に格納

import xlwings

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

st = wb.sheets['sheet7']

st.range('A2').value = "セルを思いのままに動かそう"[3:5]




(2) 対象文字列-取り出した文字列

 先ほどは、対象となる文字列に『セルを思いのままに動かそう

 という文字列を当てはめてみましたが、

 今度は、対象となる文字列セルの値を当てはめてみます。

 セルA2から取得した文字列4文字目から2文字分の文字列を取り出して

 セルB2に格納してみます。


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

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

Img7_1_35

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

 ソースコードパネルを

import xlwings

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

st = wb.sheets['sheet8']

 と書きかえます。


 セルA2から取得した文字列4文字目から2文字分の文字列を取り出して

 セルB2に格納します。

 今度も、ブラケットMidスライス書式をつかってみます。

 左辺には、戻り値として st.range('B2').value

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

       第1引数:開始位置のインデックスに『3』

       第2引数:終了位置のインデックスに『5』

 を当てはめれば良いのだから、

 st.range('B2').value = st.range('A2').value[3:5]

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet8']

st.range('B2').value = st.range('A2').value[3:5]

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


Img7_1_36

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

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


演習(2):セルA2から取得した文字列の

       4文字目から5文字分の文字列を取り出してセルB2に格納

import xlwings

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

st = wb.sheets['sheet8']

st.range('B2').value = st.range('A2').value[3:8]




(3) 対象文字列-文字数を取り出す開始位置-取り出す文字数-取り出した文字列

 今度は、ブラケットMidスライス書式

 第1引数:開始位置のインデックスと第2引数:終了位置のインデックスにセルの値

 当てはめてみます。

 セルA2から取得した文字列

 セルC2より取得した開始位置からセルD2より取得した終了位置までの文字列を取り出して

 セルE2に格納してみます。


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

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

Img7_1_37

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

 ソースコードパネルを

import xlwings

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

st = wb.sheets['sheet9']

 と書きかえます。


 セルA2から取得した文字列

 セルC2より取得した開始位置からセルD2より取得した終了位置までの文字列を取り出して

 セルE2に格納します。

 今度も、ブラケットMidスライス書式をつかってみます。

 左辺には、戻り値として st.range('E2').value

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

       第1引数:開始位置のインデックスにint(st.range('C2').value)

       第2引数:終了位置のインデックスにint(st.range('D2').value)

 を当てはめれば良いのだから、

 st.range('E2').value = \

 st.range('A2').value[int(st.range('C2').value):int(st.range('D2').value)]

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet9']

st.range('E2').value = \

st.range('A2').value[int(st.range('C2').value):int(st.range('D2').value)]

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


Img7_1_39

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

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



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

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

 ことができます。