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

10 行のループで複数の文字列を連続分解

11 列のループで複数の文字列を連続分解

12 指定した行番号と列番号のセル番地を取得

13 特定の文字列を指定文字列に置き換え

14 セル列番号を英字の列名に変換

15 文字列の中で特定の文字の位置インデックスを取得

16 セルの書体を変更

特定の文字列を指定文字列に置き換え

 Pythonのreplaceメソッドをつかうと、

 対象となる文字列で特定の文字列を指定した文字列に置き換えた文字列を取得することができます。

Img7_4_21

 replaceメソッドでは、

 対象となる文字列に対して、第1引数に特定の文字列、第2引数に指定した文字列を入れると、

 戻り値として、置き換えた文字列を取得することができます。


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

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

Img7_4_22


1. 特定の文字列を指定文字列に置き換え

 1行目の右端セルの最大列番号『11』を取得した後、

 1行目11列目のセル:range(1, 11)の文字列『同じ処理を繰り返す』で、

 『処理』を、『問題』に、置き換えた文字列を取得して、

 2行目11列目のセル:range(2, 11)に格納してみます。

xlwingsをインポート

Excelファイル『Wkbook4』をメモリ上に読みこみWorkbookオブジェクト『wb』を生成

Excelシート『sheet1』を読みこみsheetオブジェクト『st』を生成

1行目の最大列を取得し、変数『最大列』に格納

セル(1,最大列)の文字列で『処理』を『問題』に置き換えた文字列を取得し、セル(2,最大列)の値に格納

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet1']

最大列 = st.range(1,st.cells.last_cell.column).end('left').column

st.range(2, 最大列).value = st.range(1, 最大列).value.replace("処理", "問題")

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


Img7_4_23

 『同じ処理を繰り返す』で、『処理』を、『問題』に、置き換えた文字列『同じ問題を繰り返す』が、

 セルK2に書きこまれました。



2. 特定の文字列を取り除く

 次に、1行目の右端セルの最大列番号『11』を取得した後、

 1行目11列目のセル:range(1, 11)の文字列『同じ処理を繰り返す』で、

 『同じ』を取り除いた文字列を取得して、2行目11列目のセル:range(2, 11)に格納してみます。

 『同じ』を取り除くということは、『同じ』を『』(ブランク:値が存在しないこと)に置き換えるということです。

 『同じ処理を繰り返す』で、『同じ』を、『』に、置き換えた文字列を取得して、

 2行目11列目のセル:range(2, 11)に格納してみます。

xlwingsをインポート

Excelファイル『Wkbook4』をメモリ上に読みこみWorkbookオブジェクト『wb』を生成

Excelシート『sheet1』を読みこみsheetオブジェクト『st』を生成

1行目の最大列を取得し、変数『最大列』に格納

セル(1,最大列)の文字列で『同じ』をブランクに置き換えた文字列を取得し、セル(2,最大列)の値に格納

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet1']

最大列 = st.range(1,st.cells.last_cell.column).end('left').column

st.range(2, 最大列).value = st.range(1, 最大列).value.replace("同じ", "")

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


Img7_4_24

 『同じ処理を繰り返す』で、『同じ』を取り除いた文字列『処理を繰り返す』が、

 セルK2に書きこまれました。



3. 列のループで特定の文字列を取り除く

 それでは、1行目の文字が入っているセルの最大列を取得した後、

 最小列から最大列にかけて、

 1行目のセルから取得した文字列から『する』を取り除いた文字列を取得して、

 2行目のセルに順に格納してみます。

xlwingsをインポート

Excelファイル『Wkbook4』をメモリ上に読みこみWorkbookオブジェクト『wb』を生成

Excelシート『sheet2』を読みこみsheetオブジェクト『st』を生成

変数『開始列』に『2』列目を代入

1行目の最大列を取得し、変数『最大列』に格納

変数『終了列』に『最大列』+1を代入

変数『列番号』を『開始列』から『終了列』までカウントアップしながら

以下の処理を繰り返す

セル(1,列番号)の文字列で『する』をブランクに置き換えた文字列を取得し、セル(2,列番号)の値に格納

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

開始列 = 2

最大列 = st.range(1,st.cells.last_cell.column).end('left').column

終了列 = 最大列 + 1

for 列番号 in range(開始列,終了列):

st.range(2, 列番号).value = st.range(1, 列番号).value.replace("する", "")

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


Img7_4_25

 B列からK列にかけて、1行目のセルから取得した文字列から『する』を取り除いた文字列が、

 2行目のセルに順に書きこまれました。



 このように、replaceメソッドを使うと、

 対象となる文字列で特定の文字列を指定した文字列に置き換えた文字列を取得することができます。