【関数・メソッド・プロパティ設定をつかう】
1 文字列の左端から一部の文字列を取得
2 文字列の右端から一部の文字列を取得
3 文字列の指定位置から指定文字分の文字列を取得
4 三つのブラケットスライス書式をつかう
5 文字列の指定位置から1文字を取得
6 文字列の文字数を取得
7 文字列のループで1文字ずつ分解
文字列の右端から一部の文字列を取得
Pythonでは、ブラケット[]をつかうと、対象となる文字列の中から指定位置の文字を取り出すことができます。
PythonのブラケットRightスライス書式をつかうと、
対象となる文字列の開始位置のインデックスから右端までをスライスした(切り取った)文字を取り出す
ことができます。
文字列の順番と最後尾からの文字の位置を示すインデックスの関係は、次のようになります。
ブラケットRightスライス書式では、第1引数:開始位置のインデックスを入れると、
戻り値として、対象となる文字列の指定した開始位置のインデックスから右端までの文字列を取り出す
ことができます。
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) 取り出した文字列
『セルを思いのままに動かそう』という文字列の右端から1文字分の文字列を取り出して
セルA2に格納してみます。
予め、次のようなExcelシート『sheet4』を用意して、
Excelブック名を『WkBook1.xlsx』として保存します。
この『WkBook1.xlsx』の『sheet4』を読みこみます。
ソースコードパネルを
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet4']
と書きかえます。
『セルを思いのままに動かそう』という文字列の右端から1文字分の文字列を取り出して
セルA2に格納します。
ブラケットRightスライス書式をつかってみます。
左辺には、戻り値として st.range('A2').value
右辺には、対象となる文字列:Stringに『”セルを思いのままに動かそう”』
第1引数:開始位置のインデックスに『-1』
を当てはめれば良いのだから、
st.range('A2').value = "セルを思いのままに動かそう"[-1:]
と記述します。
【ソースコードパネル】
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet4']
st.range('A2').value = "セルを思いのままに動かそう"[-1:]
それでは、そのPythonプログラムを実行してみましょう。
『セルを思いのままに動かそう』の右端から1文字分の文字列が取り出されて
セルA2に『う』と書きこまれました。
-
演習(1):『セルを思いのままに動かそう』という文字列の
右端から2文字分の文字列を取り出してセルA2に格納
-
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet4']
st.range('A2').value = "セルを思いのままに動かそう"[-2:]
(2) 対象文字列-取り出した文字列
先ほどは、対象となる文字列に『セルを思いのままに動かそう』
という文字列を当てはめてみましたが、
今度は、対象となる文字列にセルの値を当てはめてみます。
セルA2から取得した文字列の右端から2文字分の文字列を取り出して
セルB2に格納してみます。
予め、次のようなExcelシート『sheet8』を用意して、
Excelブック名を『WkBook1.xlsx』として保存します。
この『WkBook1.xlsx』の『sheet5』を読みこみます。
ソースコードパネルを
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet5']
と書きかえます。
セルA2から取得した文字列の右端から2文字分の文字列を取り出して
セルB2に格納します。
今度も、ブラケットRightスライス書式をつかってみます。
左辺には、戻り値として st.range('B2').value
右辺には、対象となる文字列:StringにセルA2の値
第1引数:開始位置のインデックスに『-2』
を当てはめれば良いのだから、
st.range('B2').value = st.range('A2').value[-2:]
と記述します。
【ソースコードパネル】
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet5']
st.range('B2').value = st.range('A2').value[-2:]
それでは、そのPythonプログラムを実行してみましょう。
『セルを思いのままに動かそう』の右端から2文字分の文字列が取り出されて
セルB2に『そう』と書きこまれました。
-
演習(2):セルA2から取得した文字列の
右端から3文字分の文字列を取り出してセルB2に格納
-
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet5']
st.range('B2').value = st.range('A2').value[-3:]
(3) 対象文字列-取り出す文字数-取り出した文字列
今度は、ブラケットRightスライス書式の第1引数:開始位置のインデックスにセルの値を
当てはめてみます。
セルA2から取得した文字列のセルC2より取得した開始位置から右端までの文字列を取り出して
セルD2に格納してみます。
予め、次のようなExcelシート『sheet6』を用意して、
Excelブック名を『WkBook1.xlsx』として保存します。
この『WkBook1.xlsx』の『sheet6』を読みこみます。
ソースコードパネルを
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet6']
と書きかえます。
セルA2から取得した文字列のセルC2より取得した開始位置から右端までの文字列を取り出して
セルD2に格納します。
今度も、ブラケットRightスライス書式をつかってみます。
左辺には、戻り値として st.range('D2').value
右辺には、対象となる文字列:StringにセルA2の値
第2引数:開始位置のインデックスにint(st.range('C2').value)
を当てはめれば良いのだから、
st.range('D2').value = st.range('A2').value[int(st.range('C2').value):]
と記述します。
【ソースコードパネル】
import xlwings
wb = xlwings.Book('WkBook1.xlsx')
st = wb.sheets['sheet6']
st.range('D2').value = st.range('A2').value[int(st.range('C2').value):]
それでは、そのPythonプログラムを実行してみます。
『セルを思いのままに動かそう』の右端から4文字分の文字列が取り出されて
セルD2に『動かそう』と書きこまれました。
このように、ブラケットRightスライス書式をつかうと、
対象となる文字列の開始位置のインデックスから右端までをスライスした(切り取った)文字を取り出す
ことができます。