学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Python | 20 | StringBufferを用いたプログラム

<<前  [TOP]  次>>


StringBufferは、文字列に文字列を加えたりすることのできるメソッドです。
Pythonでの文字列連結は足し算するだけでいいです。

str = 'str1' + 'str2'



次のプログラムを作ってみましょう。


【buffertest1.py】

class Buffertest1:

    def __init__(self):
        self.sb = '00'

def add( sb ):
    sb = sb + '11'
    return sb

b=Buffertest1()

sb = add( b.sb )

print(sb)



出力結果です。

buffertest1.py
buffertest1.py



次のプログラムを作ってみましょう。


【buffertest2.py】

#buffertest2.py

sb = 'スタート'
print( sb)
print( '大きさ:' + str(len(sb)))

# ファイルサイズ(バイト単位)
print( '容量:' + str(len(sb.encode())) + 'バイト')
print( '')


sb = sb + '0123456789'
print( sb)
print( '大きさ:' + str(len(sb)))
print( '容量:' + str(len(sb.encode())) + 'バイト')
print( '')

# 4番目以降に文字列を挿入する
sb = sb[:4] +   '【インサート1】' + sb[4:]
print( sb)
print( '大きさ:' + str(len(sb)))
print( '容量:' + str(len(sb.encode())) + 'バイト')
print( '')

# 4番目以降に文字列を挿入する(リスト化してインサート)
sb_list = list(sb)
sb_list.insert(4,'【インサート2】')
sb=''.join(sb_list)
print( sb)
print( '大きさ:' + str(len(sb)))
print( '容量:' + str(len(sb.encode())) + 'バイト')
print( '')

# 指定した文字を消去
sb = sb.replace('【インサート1】','')
print( sb)
print( '大きさ:' + str(len(sb)))
print( '容量:' + str(len(sb.encode())) + 'バイト')
print( '')



ファイルのサイズを出したい時はlen(sb.encode())のようにしてlen()メソッドとencode()メソッドを組み合わせること出力することができます。


文字列を文字と文字の間に挿入するには2通りのやり方があります。
sb[:4] は変数sbの最初の4文字という意味を持ち、sb[4:] は変数sbの最後のの4文字という意味を持ちます。
list(sb)とすると変数sbに格納されている文字列をリスト化することができます。
この時点で変数sb_listを出力すると['ス', 'タ', 'ー', 'ト', '【', 'イ', 'ン', 'サ', 'ー', 'ト', '1', '】', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']のようになっています。
このリストにinsert()メソッドで文字列を挿入しています。
今回のinsert(4,'【インサート2】')ではリスト4番目の後に「インサート2」という文字列を挿入しています。
その後、join()メソッドでリストを繋げて一つの文字列に結合します。
''.join(sb_list)のようにして使いますが、今回は.joinの前に''として何もない状態で結合しています。
これを'-'のように文字を入れるとつなぎ合わせたリストの間に指定した文字が挿入されます。


文字を消去したい場合はreplace()メソッドを利用します。
sb = sb.replace('【インサート1】','')のようにして使いますが、第一引数に消去したい文字、第二引数に置き換える文字を入れます。
今回は第二引数に何も入れていないので文字が消えるという挙動になります。

出力結果を見てみましょう。

stringbuffer
stringbuffer



↓↓クリックして頂けると励みになります。


<<前  [TOP]  次>>