ラベル str型 の投稿を表示しています。 すべての投稿を表示
ラベル str型 の投稿を表示しています。 すべての投稿を表示

2022年4月25日月曜日

【文字列】rjustによる右寄せ文字

 rjustメソッドにより指定した文字数になるように右寄された文字列が返される。左側の余白はデフォルトでは半角スペースで埋められる。



1. rjustによる文字列の右寄せ

 rjustの書式は以下。widthが文字数の指定、fillcharは埋める文字の指定でデフォルトは' '(半角スペース)。

str.rjust(width[, fillchar])

 fillcharの指定がない場合、rjustの引数に指定した文字数になるように、文字列に左から半角スペースが追加される。

print('abcd'.rjust(6))

実行結果

'  abcd'


 変換前の文字列の長さが指定した文字数よりも小さい場合、元の文字列が返される。

print('abcd'.rjust(3))

実行結果

'abcd'


 fillcharを指定すると、その文字で左埋めされる。

print('abcd'.rjust(6, '0'))

実行結果

'00abcd'


 文字列が2バイト文字でも動作する。

print('日本語'.rjust(6))

実行結果

'   日本語'


 fillcharが2バイト文字でも動作する。

print('日本語'.rjust(6, '空'))

実行結果

'空空空日本語'


2. リファレンス

Python 標準ライブラリ > str.rjust(width[, fillchar])

使用バージョン:Python 3.8.8

【文字列】zfillによる文字列の0埋め

 zfillメソッドにより文字列が0埋めされる。



1. zfillによる文字列の0埋め

 zfillの引数に指定した文字数になるように、文字列に左から0が追加される。

print('2214'.zfill(7))

実行結果

'0002214'


 変換前の文字列の長さが指定した文字数よりも小さい場合、元の文字列が返される。

print('2214'.zfill(3))

実行結果

'2214'


 文字列の先頭に-又は+がある場合は-又は+の後ろに0が充填される。

print('-2214'.zfill(3))

実行結果

'-002214'


 文字列が2バイト文字でも動作する。

print('日本語'.zfill(7))

実行結果

'0000日本語'


2. リファレンス

Python 標準ライブラリ > str.zfill(width)

使用バージョン:Python 3.8.8

2021年11月9日火曜日

【文字列】translateによる文字の変換

 translateにより文字を別の文字(または文字列)に変換される。translateによる変換は、str.maketransにより作成した変換テーブルに基づいて行われる。




1. 文字列による変換テーブル

translateの書式は以下の通り。

str.translate(table)

 文字列strが変換テーブルtableに基づいて変換される。


 変換テーブルの作成にはstr.maketransを使う。
str.maketransの書式は以下の通り。

static str.maketrans(x[, y[, z]])

引数xが変換前の文字を結合した文字列、yが変換後の文字を結合した文字列、zは削除する文字を結合した文字列でオプション。xyの文字列に含まれる文字が順番に一対一で変換される。


 '1'→'1'、'2'→'2'・・・と全角を半角に変換し'¥'を削除する例。

table = str.maketrans('1234567890', 
                      '1234567890',
                      '¥')
print('今日の売り上げは¥45800円でした'.translate(table))

実行結果

今日の売り上げは45800円でした


2. 辞書による変換テーブル

 文字列により作成した変換テーブルを用いた場合、1文字→1文字の変換となるが、1文字→文字列の変換をする場合には辞書を使って変換テーブルを作成する。


'巌'→'岩', '忽'→'たちま'と変換する例。

table = str.maketrans({'巌':'岩', '忽':'たちま'})
print('巌穴の一点の光明は忽ち失せて'.translate(table))

実行結果

岩穴の一点の光明はたちまち失せて

 translateでは文字列→文字(文字列)の変換はできない。その場合はreplaceを使う。



3. リファレンス

Python 標準ライブラリ > static str.maketrans(x[, y[, z]])
Python 標準ライブラリ > str.translate(table)

使用バージョン:Python 3.8.8

2020年3月31日火曜日

【文字列】分割(split)、結合(join)、置換(replace)

 区切り文字により文字列を分割するsplit、文字列を結合するjoin、文字列を別の文字列に置き換えるreplaceについて解説する。




1. splitによる文字列の分割

 splitにより文字列がスペース、タブ、改行で分割されリストに変換される。

sentence = 'check it out'
print(sentence.split())

実行結果

['check', 'it', 'out']


 スペースが2つ以上連続した場合も1つの区切り文字として扱われる。

sentence = 'check   it   out'
print(sentence.split())

実行結果

['check', 'it', 'out']


 全角スペースでも問題なく区切られる。

sentence = 'こんにちは さようなら また明日'
print(sentence.split())

実行結果

['こんにちは', 'さようなら', 'また明日']


 特定の文字で区切りたい場合は引数に文字列を指定する。
'。'で区切った例。

sentence = 'こんにちは。さようなら。また明日'
print(sentence.split('。'))

実行結果

['こんにちは', 'さようなら', 'また明日']


'さようなら'で区切った例。

sentence = 'こんにちは。さようなら。また明日'
print(sentence.split('さようなら'))

実行結果

['こんにちは。', '。また明日']


2. joinによる文字列の結合

 joinの引数としてリストなどのイテラブルオブジェクトを与えると文字列が結合される。
書式はstr.joinで、strに与えた区切り文字で区切った文字列となる。
次の例では区切り文字を与えていないので繋がった文字列が生成される。

words = ['こんにちは', 'さようなら', 'また明日']
print(''.join(words))

実行結果

'こんにちはさようならまた明日'


区切り文字に'。'を与えた場合

words = ['こんにちは', 'さようなら', 'また明日']
print('。'.join(words))

実行結果

'こんにちは。さようなら。また明日'


3. replaceによる文字列の置換

 特定の文字列を別の文字列に書き換えるのにはreplaceを用いる。
'客'を'キャク'に置き換える例

tonguetwister = '隣の客はよく柿食う客だ'
print(tonguetwister.replace('客', 'キャク'))

実行結果

'隣のキャクはよく柿食うキャクだ'


引数countを指定すると、指定の個数だけ置換される。
1を指定しているので左から1つだけ置換される。

tonguetwister = '隣の客はよく柿食う客だ'
print(tonguetwister.replace('客', 'キャク', 1))

実行結果

'隣のキャクはよく柿食う客だ'


4. リファレンス

Python 標準ライブラリ > str.split(sep=None, maxsplit=-1)
Python 標準ライブラリ > str.join(iterable)
Python 標準ライブラリ > str.replace(old, new[, count])

使用バージョン:Python 3.7.0

2020年3月22日日曜日

【文字列】文字列の検索

 ある文字列に任意の文字列が含まれるかどうかを調べるin/not in演算子、ある文字列のどこに任意の文字(列)が含まれているかを調べるfindrfind、ある文字列に任意の文字(列)がいくつ含まれているかを調べるcountについて解説する。



1. in/not in演算子で任意の文字列が含まれるか調べる

 in/not in演算子によりある文字列に任意の文字列が含まれるかどうかを調べることができる。
in演算子は目的の値が含まれていればTrue、含まれていなければfalseを返す

変数bashoには文字列'夏草や兵どもが夢の跡'が代入されており、変数kigoに'夏草'を代入した場合kigoが文字列bashoに含まれるのでTrueとなる。一方変数kigoに'蛙'を代入した場合文字列bashoには含まれていないのでFalseが返される。

basho = '夏草や兵どもが夢の跡'
kigo = '夏草'
print(kigo in basho)

実行結果


True


basho = '夏草や兵どもが夢の跡'
kigo = '蛙'
print(kigo in basho)

実行結果

False


 not ininとは逆で目的の値が含まれればFalse、含まれていなければTrueを返す。

basho = '夏草や兵どもが夢の跡'
kigo = '夏草'
print(kigo not in basho)

実行結果

False


basho = '夏草や兵どもが夢の跡'
kigo = '蛙'
print(kigo not in basho)

実行結果

True


2. findによる任意の文字列の位置取得

 ある文字列のどこに任意の文字列が現れるかを調べる場合findを用いる。
次の例では'隣の客はよく柿食う客だ'の中に'客'がどこで現れるかを調べておりインデックス2(0,1,2で3文字目)が返ってくる。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.find(word))

実行結果

2


 findは文字列の左から見て最初に現れた位置(インデックス)を返す。文字列'隣の客はよく柿食う客だ'には右から2つ目(インデックス9)にも探している'客'が現れるが、既に1つ目の'客'のインデックスである2を返しており9は返さない。探している文字が含まれていない場合には-1が返される。

hayakuchi = '隣の客はよく柿食う客だ'
word = '竹'
print(hayakuchi.find(word))

実行結果

-1


3. rfindによる任意の文字列の位置取得(後ろから)

 rfindでは文字列を右(後ろ)からみて最初に現れる位置を返す。
次の例では右から2文字目(左から10文字目、インデックス9)の'客'の位置を返す。左から3番目(インデックス2)の'客'の位置は返さない。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.rfind(word))

実行結果

9


4. countで任意の文字列の個数を調べる

 countを使うと任意の文字列がいくつ含まれるかを調べることができる。文字列'隣の客はよく柿食う客だ'には'客'が2つ含まれるので2が返される。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.count(word))

実行結果

2


5. リファレンス

Python 標準ライブラリ > str.count(sub[, start[, end]])
Python 標準ライブラリ > str.find(sub[, start[, end]])

使用バージョン:Python 3.7.0