Python 1年間の纏め 文字列を操る ②

チャットロボを作るのに必要な文字列の処理を再度勉強しなおします。

 

------------------------------------

①  リストを作り文字列を操る

*  全ての要素が整数型(int型)の場合
number = [1, 2, 3, 4, 5] #'や"で囲む必要はない

 

* 全ての要素が文字列型(str型)
greets = ['おはよう','今日は','さようなら'] #'か"で囲む

 

* 文字列型(str型)、整数型(int型)、浮動小数点型(float型)混在
data = ['身長', 170,'体重', 60.5] #文字列だけ'"か"で囲む

 

*リストに追加する場合は一番最後に追加される
greets.append('お早う') #--> ['おはよう', 'こんにちは', '今晩は', 'お早う']

 

*リストの要素を全て消す場合
greets = ['おはよう','今日は','さようなら']
greets = []  何も入っていない状態になる
greets.append('お早う')  --> ['お早う'] 他はdeleteされた

* リストの要素にアクセする
greets = ['おはよう','こんにちは','今晩は']
greets = [0]  --> 'おはよう' リストの要素番号は[0]から始まる

 

*リストの最後の要素にアクセする
greets = ['おはよう','こんにちは','今晩は']
greets[-1]  --> '今晩は'
  -->要素の個数(要素の範囲)を超えて指定すると「Index Error」が返される

 

*リストの要素をスライスする(切り取る)
subject = ['現代国語','古文','数学Ⅰ','世界史','日本史',]
subject[0:3] --> ['現代国語', '古文', '数学Ⅰ']
subject[-1] -->'日本史'
subject[-3:-1] --> ['数学Ⅰ', '世界史'] -1は後から2番目となる <---この辺混乱する
subject[::1] --> ['現代国語', '古文', '数学Ⅰ', '世界史', '日本史']
subject[::-1] -->['日本史', '世界史', '数学Ⅰ', '古文', '現代国語'] 逆順に取り出す
subject[::2] --> ['現代国語', '数学Ⅰ', '日本史'] 二つ置きに取り出す

 

*リスト内の任意の要素を取り除く
subject = ['現代国語','古文','数学Ⅰ','世界史','日本史',]
subject.pop() -->取り出されるのは'日本史'なので、その後のsubjectは
    ['現代国語', '古文', '数学Ⅰ', '世界史']となる
subject.pop(1) --> 2番目の古文が取り出され、残りは['現代国語', '数学Ⅰ', '世界史']となる

 

* split : 文字列をリストに分割する(リストに作り直す)
message9 = 'Java, 体重, Python, リスト'
print(message9.split(','))  --> ['Java', ' 体重', ' Python', ' リスト']

 

* join : リストを結合して文字列にする(splitの逆)
message10 = ['Java', ' 体重', ' Python', ' リスト']
print(','.join(message10))  --> Java, 体重, Python, リスト

 

* clear :  リストを空にする
message11 = ['Java', ' 体重', ' Python', ' リスト']
print(message11.clear()) --> None  何も入っていないということですので、clearされてますね
print(message11)  -->  [] 何も入っていないということですので、clearされてますね

 

* copy :  リストをコピーする
message12 = ['韓国', ' 中国', ' 米国', ' 日本']
message13 = message12.copy()
print(message13) --> ['韓国', ' 中国', ' 米国', ' 日本'] copyされいますね

 

* リストの足し算 :  単純に「+」でつなぐ
message14 = [' 米国', ' 日本']
message15 = ['Java', ' Python']
message16 = message14 + message15
print(message16) --> [' 米国', ' 日本', 'Java', ' Python']

 

* extend :二つのリストをつなぐ
message17 = [' 米国', ' 日本']
message17.extend(['Java', ' Python'])
message18 = message17.extend(['Java', ' Python']) --> これはNG
print(message18)  -->これはNG
print(message17) --> [' 米国', ' 日本', 'Java', ' Python']  単純に「+」でつなぐぐのとどう違うのかな?

 

 

 

② 文字列を操る

#テキストマイニングでは必須のスキル

*format : 文字列の書式化(年賀状の出だし部分など)
name1 = '阿部'
text1 = 'お久しぶりです.'
message1 = '{0}様、{1}'.format(name1, text1)
print(message1) --> 阿部様、お久しぶりです.

* replace : 文字列の一部を置換する
text2 = 'お久しぶりです.'
text3 = 'お変わり御座いませんか?'
message2 = message1.replace(text2, text3)
print(message2)  以下が表示された結果
 --> 阿部様、お久しぶりです.
 --> 阿部様、お変わり御座いませんか?

* count : 単語の出現回数を数える
message3 = 'I like to learn Python.'
print(message3.count('to'))  --> 1 (toという単語は1回使われている)

 

*  index : 単語が最初に現れる位置を教える(無ければエラー表示)
message4 = 'I like to learn Python.'
print(message4.index('learn'))  --> 2 (learnという文字は10番目に現れている)

* find : 単語が最初に現れる位置を教える(無ければ-1を返す)
message5 = 'I like to learn Java.'
print(message5.find('Java'))  --> 16 (Javaという単語は16番目に現れている)
print(message5.find('java'))  --> -1 (javaという単語は無いので-1と表示される)

 

* strip : 先頭及び末尾の空白を除去する
message6 = ' I like to learn Java. ' -->先頭と末尾に全角空白在り
print(message6.strip()) --> I like to learn Java. 全角空白でも除去される

 

* startswith : その単語で始まっていればTrue、そうでなければFalse
message7 = 'Long time no see!'
print(message7.startswith('Long'))  --> True
print(message7.startswith('long'))   --> False 大文字と小文字は別文字

* endswith : その単語で終わっていればTrue、そうでなければFalse
message8 = 'Long time no see!'
print(message8.endswith('see'))  --> False
print(message8.endswith('see!')) --> True

 

 

 

続く

Python別館
Python別館 目次

Pythonで作成したアプリ関連の記事は「Python別館」に、widgetやその使用方法・それを使 …

Python別館
Q&A テンプレート GUI編

良く英単語アプリなどを作る時に似たようなアプリになりますので、すぐ真似できるようにテンプレートらしき …

Python別館
文字列の配置

ラベル、テキストボックスなどで、文字列の配置が微妙に異なります。 いつも迷うので基本的なものを挙げて …