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

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

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

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

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

6 文字列の文字数を取得

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

8 文字が入っているセルの最大行を取得

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

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


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

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

 ことができます。

Img7_1_51

 文字列の順番と先頭からの文字の位置を示すインデックスの関係は、次のようになります。

Img7_1_52

 ブラケット1文字スライス書式では、引数:切り取り位置のインデックスを入れると、

 戻り値として、対象となる文字列切り取り位置のインデックスまでの文字列を取り出す

 ことができます。


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

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

Img7_1_53

 この『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['sheet11']

 と記述しておきます。




(1) 切り取り位置: 1

 切り取り位置『1』にするために、切り取り位置のインデックス:セルB2の値を『0』とします。

 セルA3から取得した文字列から切り取り位置のインデックス:セルB2の値の文字列を取り出して

 セルB3に格納します。


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

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

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

       引数:切り取り位置のインデックスにint(st.range('B2').value)

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

 st.range('B3').value = st.range('A2').value[int(st.range('B2').value)]

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet11']

st.range('B3').value = st.range('A2').value[int(st.range('B2').value)]

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


Img7_1_54

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

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



(2) 切り取り位置: 2

 切り取り位置『2』にするために、切り取り位置のインデックス:セルB2の値を『1』とします。

 セルA3から取得した文字列から切り取り位置のインデックス:セルB2の値の文字列を取り出して

 セルB3に格納します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet11']

st.range('B3').value = st.range('A2').value[int(st.range('B2').value)]

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


Img7_1_55

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

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



(3) 切り取り位置: 3

 切り取り位置『3』にするために、切り取り位置のインデックス:セルB2の値を『2』とします。

 セルA3から取得した文字列から切り取り位置のインデックス:セルB2の値の文字列を取り出して

 セルB3に格納します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet11']

st.range('B3').value = st.range('A2').value[int(st.range('B2').value)]

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


Img7_1_56

 『セルを思いのままに動かそう』の『3』文字目の文字が取り出されて、

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



(4) 切り取り位置:最後の文字位置

 切り取り位置最後の文字位置にするために

 切り取り位置のインデックス:セルB2の値を最後の文字位置のインデックスに書き換えます。

 セルA3から取得した文字列から切り取り位置のインデックス:セルB2の値の文字列を取り出して

 セルB3に格納します。


 『セルを思いのままに動かそう』の最後の文字位置を、左から数えてみます。

 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

 最後の文字位置は『13』だから、最後の文字位置のインデックスは『12』です。

 セルB2に『12』を書きこみます。

Img7_1_57

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet11']

st.range('B3').value = st.range('A2').value[int(st.range('B2').value)]

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


Img7_1_58

 『セルを思いのままに動かそう』の『13』文字目の文字が取り出されて、

 セルB3に『う』と書きこまれました。



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

 切り取り位置のインデックス:セルB2

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

 文字列の指定位置から1文字を自由自在に取得することができる

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