|
ホーム 戻る
第2章 文字列
ミラボウ橋の下 セーヌは流れ 私の恋も また 思い出さねば ならないのか 喜びはいつも 苦しみの後にくる
夜のとばりよ 鐘よ鳴れ 日々は過ぎ 私は残る (中略)
過ぎゆく日々 かの時も 私の恋も 戻らない ミラボウ橋の下 セーヌは流れ 夜のとばりよ 鐘よ鳴れ 日々は過ぎ 私は残る アポリネール (戸張碩山訳)"
pythonを始める。
pythonIDLE(統合環境)を起動する。(第1章の後半で説明しています。)
IDLEをOPENしてつぎの通り打ち込む。
print "hello"
print "今日は"
コマンドや、””は半角英数で打ち込みます。
例1
print'一生愛せるものを見つけなさい。' print'見つけたら、何があっても食らいついていく、厳しく愛し続ける。' print 'そのうち、自分に自信ができますね。\n','勇気がわいてきますね。\n,淀川長治'
一生愛せるものを見つけなさい。 見つけたら、何があっても食らいついていく、厳しく愛し続ける。 そのうち、自分に自信ができますね。 勇気がわいてきますね。 ,淀川長治
例 2
print 'パパやママが若葉のしあわせを\n見送るさびしさの、その日はいつのこと、' print 'その日にあえるすべもない祖父は、\nうば車を押しながらそっと祈る' print '雨風よ、若葉をよけてゆけ、\n金子光晴'
パパやママが若葉のしあわせを 見送るさびしさの、その日はいつのこと、 その日にあえるすべもない祖父は、 うば車を押しながらそっと祈る 雨風よ、若葉をよけてゆけ、 金子光晴 >>>
>>> print "hello" 半角英数です。 hello >>> print "今日は" ひらがな変換です。
今日は
print文はデータ内容を人に分かるように画面に表現する機能を持った文です。
プログラムをつくる。コンピュータに打ち込む。コンピュータが内容を了解して、画面に
表現する。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(1)文字列とは: string :文字の並び 文字列オブジェクト
オブジェクト:データのこと。数値も文字列もオブジェクトです。 オブジェクトは自分とそうでないものを区分します。 オブジェクトはメッセージを受け取ります。それを受け取るとメソッド(手 続き)を実行します。オブジェクトは内容をもっています。
コード:プログラムのこと。 print:pythonの文 文字:’’か””で囲む.。’で始まったら’で終わり、”で始まったら”で終わる。’で始まれば文字列内部に”を含めることができ、”で始まれば、’をふむめることができる。 メモリ:コンピュータが今処理しているデータを保持しておく一時的記憶装置、データ が格納される。 アドレス:>>> age =’14’ >> age ’14’ ageという変数が宣言されると、ageが参照する、アドレスに’14’という文字列が格 納される。 ageと入力すると、ageが参照(リファレンス)するアドレスの内容’14’が表示される print:: 指定されたデータを表示する命令。print を使うとデータの種類にかかわら ず文字列に 変換 される。 データ型: 1整数型 2浮動小数点型 3文字列型 4リスト型 5辞書型の5種類。 シーケンス:正の整数のインデックスが付いた、順序付けられたアイテムのコンテナ 文字列 string :複数の文字を順番にならべたテキストデータ;文字列は引用符’’ か ” ”で囲む。””” ”””で囲む場合もある。 データ:情報処理を導き出すことができる何らかの事実または数値(材料)。コンピュ ータのメモリに格納。Pythonではデータを使ったときにデータの種類(数値、 文字、日付など)が定義される。:プログラムを使って処理したい情報を、数値 や文字列のような要素の組み合わせで表現したもの。(高橋・後藤ruby) カンマ:| 、|改行しないようにする。 セミコロン:| ; | 行の終端を示す。文の終端のセミコロンはPythonでは省略。 文:コマンド(命令)の種類: |# | : コメント文を示す。#以下の文字はメモ書。参考事項。 後日プログラムの内容を理解しやすくする。 書式文字列:データの表示方法を制御します。 %:書式化文字 %d:10進数を示す %s:文字列 %0.2f 小数点以下2桁の浮動小数点 %4d:数値の前をスペースで埋めて、少なくとも4桁に する
制御文字:¥n 改行 ¥t タブ ¥r キャリッジリターン ¥’’シングルクオート自体 ¥”ダブルクオート自体 len():文字列の長さを調べる関数、これから学ぶリスト、タブル、辞書などの長さも調 べるこちょができる。 join():文字列の連結を行う。
strip():前後の空白を取り除く。 [ ]:文字列の特定の要素を取り出す構文 ホワイトスペース:無視。コードを読みやすくする。 さらにテキストについて テキストとはなにか テキスト:文字の並び バイナリデータ:バイトの並び 文字列:バイトや文字(キャラクタ)変更不能(不変)の並び:シーケンス シーケンス:有限数の要素(アイテム)を一つづつ反復的に取り出すことのできるコン テナである。list、タプル等。 この文章における文字色表現 青色:プログラムコード 緑色:自由なユーザ入力 茶色:プログラムコードのうちコマンド部分およびコードの説明部分 黒色:出力結果および各章の基本文
さらに次のコードを入力してください。
>>> s='kawasaki' 'kawasaki':文字列:キャラクタ不変のシーケ ンス:文字列リテラル:文字列リテ ラルに対する操作は新しい文字 列オブジェクトを生成 >>> s= s + ' yokohama' +で文字列が連結される。 >>> s 対話式IDLEではprint文を入力 せず、単に s と入力しただけ で オブジェクト(対象物)が表示 される。 'kawasaki yokohama'
print:関数ではなく文。表示方法を呼び出して表示する。print():どんなオブジェ クトでもわかる形で表示する,表示方法のメソッドを持っている。
>>> print 'x','y','z'
x y z
>>> print 'x' 'y' 'z'
xyz
>>> print 'xyz' 'abc'
xyzabc
>>> print 'x';'y';'z' ;セミコロンをつけると改行される。
'x' 'y' 'z'
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。
下記を入力してください。
>>> print 'hello',"boy's",'be','ambitious','!'
hello boy's be ambitious ! >>> print "hello";"Boys";"be" ;"ambitious";"!" ;で改行
hello 'Boys' 'be' 'ambitious' '!'
>>> print "私の好きな町は横浜です。"
私の好きな町は横浜です。
>>> print "貴方の好きな町はどこですか?"
>>> print '私の好きな町は京都です。'
私の好きな町は京都です。
>>> print "" :空の文字列 >>> print "hello ,Python" hello , Python
>>> print "今日は"
今日は
>>> print 'hello,\npython\n!\n' 改行文字¥n
hello, python !
>>> print ('hello, \'python\'\n') '' を表現するとき¥を使用 hello, 'python'
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー (2)文字列の計算 文字列演算子の問題
s1+s2:s1とs2を連結 s1 * n :s1をn回繰り返す >>> print "I like" + "you" 計算:文字列を加える 連結になる
I likeyou スペースがない。
>>> print "I like " + "you" スペースを追加 1
I like you
>>> print "I like" + " you" スペースを追加 2
I like you
>>> print "御免ね ! " * 3 計算:文字列を掛ける 繰り返しになる
御免ね !御免ね !御免ね ! 御免ね !を!3回出力
(3)数値number 12 と文字digit 12 の違い
12は数値そのもの ”12”は1と2と二つの数字からなる文字列
>>> print 12 + 12 整数(クラス)オブジェクト
24 数値の計が出力された。 >>> print "12" + "12" 文字と文字をつなげる.
1212 数字つながって出力された。
>>> print "12 + 12 " 文字をそのままprintする。
12 + 12 文字列が出力された。
>>> print 2 * 5 数値の乗算が出力する。 10
>>> print "2" * 5 数字2を5回繰り返して出力 22222
>>> print "2 * 5" 2*5という数字を出力する。
2 * 5
>> print "100" 100という文字を出力する。
100
>>> print 100 100という数値を出力する。
100
>>> 3.145 浮動小数点(クラス)オブジェクト 3.145
(4)書式文字列を使う >>> print '合計=',23+25
合計= 48
>>> print "%d と %d の和は %d である。." %(7,56,7+56) %d 整数書式
7 と 56 の和は 63 である。
>>> # print "空白" # コメント文です。 空白を出力しています。
(5)文字列リテラル : 一または二重引用符または三重引用符で囲む
リテラル:プログラムに書かれたデータ値
>>> "hello"
'hello'
>>> "日本語"
'\x93\xfa\x96{\x8c\xea' 16進数表示
>>> print "日本語" print文で内容出力
日本語
>>> 'single quated'
'single quated'
>> "I'm a Python fantatic"
"I'm a Python fantatic"
>>> 'A not very long string\ ¥を使用して次の行につづく ことを示す that spans tow lines' 'A not very long string that spans tow lines' >>> print """これは、複数行に渡ることのできる文字列 """ """ である。Pythonは、入力したとおりに改行 してくれる。"""
これは、複数行に渡ることのできる文字列 である。Pythonは、入力したとうりに改行 改行 してくれる。
(6)文字列の処理
記述形式
>>> z = 5
>>> z = z + z**2 # =>30 この式の結果を示すコメント
>>> z
30
・・・・するには(文字列の文法)
(1)文字列を結合するには +
>>> s = 'Hello '
>>> s1 = ' python'
>>> s = s + s1
>>> s
'Hello python'
(2)文字列を繰り返し記述するには *
>>> s = 'python '
>>> s = s * 3
>>> s
'python python python '
(3)大文字と小文字を入れ替えるには . upper() .lower()
小文字を大文字にする
>>> s
'python python python '
>>> s.upper() upper()メソッド
'PYTHON PYTHON PYTHON '
大文字を小文字にする
>>> s 元の文字列はそのまま
'python python python '
>>> s=s.upper() sに代入
>>> s
'PYTHON PYTHON PYTHON ' 内容確認
>>> s= s.lower() lower()メソッド
>>> s 'python python python '
(4)大文字を小文字に小文字を大文字にするには .swapcase()
>>> letters = 'SdFgHjKl' >>> letters.swapcase() swapcase()メソッド 'sDfGhJkL'
(5)文字列を反転するには .reverse()
>>> s =['abc','efg','hij','kmn'] >>> s.reverse() reverse()メソッド >>> s ['kmn', 'hij', 'efg', 'abc'] >>> s =[123,456,789,10,11,12] >>> s.reverse() >>> s [12, 11, 10, 789, 456, 123]
(6)部分文字列を取り出すには [ i:j ]
>>> c = 'tokyo,yokohama,kobe' >>> c[0:5] 最初のインデックス番号の示す文字を含み、2番目のインデック ス番号の示すひとつ前の文字列の範囲までを取り出す。 'tokyo'
>>> c[0:1] 't' >>> c[0:2] 'to' >>> c[0:3] 'tok' >>> c[0:4] 'toky' >>> c[0:5] 'tokyo'
>>> c[6:14] 'yokohama' >>> c[15:19] 'kobe'
>>> c[-4:20] 'kobe'
>>> "123456789"[3] '4' >>> "123456789"[4:6] '56' >>> "123456789"[-3] '7' >>> "123456789"[-6:-3]
'456'
(7)部分文字列を置き換えるには .replace()
>>> c = 'tokyo,yokohama,kobe' .replaceメソッド
>>> c.replace('tokyo','nagoya') 'nagoya,yokohama,kobe' 置き換えた文字列を利用する場合は変数に代入する >>>
>>> c='tokyo,yokohama,kobe' >>> c1=c.replace('kobe','nagoya') >>> c1 'tokyo,yokohama,nagoya'
(8)文字列の型を調べるには type()
>>> type(c) <type 'str'>
(9)文字列の長さを調べるには len()
>>> len(c) 19
(10)文字列を検索するには find()
>>> c.find('kobe') 15 0から数えるインデックスを返す
>>> c.find('osaka') -1 ない場合はー1を返す
(11)文字列を連結するには .join()
>>> p='tokyo','nagoya','yokohama' 小さな文字列シーケンスをつなげる >>> l=''.join(p) >>> l 'tokyonagoyayokohama'
(12)配列「seq」のなかの文字列をもとの文字列にするには
>>> s=['hello','jon','how','are','you'] >>> ' '.join(s) 'hello jon how are you' >>>
(12)文字列を配列として扱う for i in range (len()):
print i
>>> d='123456' >>> for i in range(len(d)): print [i],'',
[0] [1] [2] [3] [4] [5] >>> d[2] '3' >>> s='a,b,c,d,e,f' >>> for i in range(len(d)): print [i],'',
[0] [1] [2] [3] [4] [5] >>> s[3] ',' >>> s[2] 'b'
(13)1文字をキャタクタ相当の数値に変換したい oerd( s[2 ]) >>> ord(d[2])
51
>>> s[2] 'b' >>> ord(s[2]) 98
(14)文字列の開始文字を調べるには .startswith()
>>> s='abcdef' >>> s.startswith('a') True >>> s.startswith('c') False
(15)文字列を取得し、ホワイトスペースを除去したものを返す .strip()
>>> s=' abc ' >>> s.strip() 'abc'
>>> s='abcdef ' >>> s.strip() 'abcdef'
(16)大文字を小文字に小文字を大文字に変換するには .swapcase()
>>> s='AbgrUHTccc' >>> s.swapcase() 'aBGRuhtCCC'
(17)文字列をコピーして,英数字以外のものをエスケープしたものを返す
>>> s='戸張tobari' >>> re.escape(s) '\\\x8c\\\xcb\\\x92\\\xa3tobari' >>> s='tobari' >>> re.escape(s) 'tobari'
(18)左寄せ右寄せの表現をするには
>>> s='python ruby' >>> s.ljust(30) 'python ruby ' >>> s.ljust(20) 'python ruby ' >>> s.rjust(20) ' python ruby' >>>
(19)文字列の一部を除去するには
>>> s.lstrip('p') 'ython ruby' >>> s.rstrip('by') 'python ru' >>> s.strip('p,y') 'thon rub'
(20)元の文字列をタイトル・ケースにして返すには
>>> s='PYTHON PYTHON PYTHON' >>> s.title() 'Python Python Python'
(21)数値文字列の左側を「0」で詰めるには
>> d='1234567' >>> d.zfill(10) '0001234567'
文字列の基本
>>> print 'this is a literal string'
this is a literal string >>> print 'this is another string'
this is another string
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ホーム 戻る
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|