スナックelve 本店

バツイチ40代女の日記です

No.1484 第2回パイそんの文字列操作

移動前ブクマページ: https://b.hatena.ne.jp/entry/s/elve.hateblo.jp/entry/2018/02/12/120056

変数の中の特殊文字をそのまま出力したいとき

No.1483 第1回パイそんを勉強する - ダメシ添加大戦

はrepr()関数を使うみたい。 ====

#testに文字列を入れる
>>> test="死にたみマックス! アザラ死ちゃん!/元夫マルセイと暮らすバツイチ日記"

#指定の文字を取り出す
#5文字
>>> test[:5]
'死にたみマ'
#11文字目から18文字目(数え間違えた)
>>> test[11:18]
'ザラ死ちゃん!'
#10文字目から18文字目(数え間違えた)
>>> test[10:18]
'アザラ死ちゃん!'
#半角スペースの一確認
>>> test[9:10]
' '
#改行を入れてみる
>>> test[:18]+"\n"+test[20:]
'死にたみマックス! アザラ死ちゃん!\n夫マルセイと暮らすバツイチ日記'
#print文で確認
>>> print(_)
死にたみマックス! アザラ死ちゃん!
夫マルセイと暮らすバツイチ日記
#最後の文字列をtest2に
>>> test2=_
#printで確認
>>> print(test2)
死にたみマックス! アザラ死ちゃん!
夫マルセイと暮らすバツイチ日記
#rは使えない
>>> print(r test2)
  File "<stdin>", line 1
    print(r test2)
                ^
SyntaxError: invalid syntax
>>> print(rtest2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'rtest2' is not defined
#repr関数を使ってみる
>>> repr (test2)
"'死にたみマックス! アザラ死ちゃん!\\n夫マルセイと暮らすバツイチ日記'"
#print文だとこう
>>> print(repr(test2))
'死にたみマックス! アザラ死ちゃん!\n夫マルセイと暮らすバツイチ日記'
>>>

うーん、よくわからんないな。

オブジェクトの印字可能な表現を含む文字列を返します。この関数は多くの型について、 eval() に渡されたときと同じ値を持つようなオブジェクトを表す文字列を生成しようとします。そうでない場合は、山括弧に囲まれたオブジェクトの型の名前と追加の情報 (大抵の場合はオブジェクトの名前とアドレスを含みます) を返します。クラスは、 __repr__() メソッドを定義することで、この関数によりそのクラスのインスタンスが返すものを制御することができます。

2. 組み込み関数 — Python 3.6.3 ドキュメント

ますますわからんwwww

困ったときのはてなダイアリー

ある値を文字列にしたい時には、str()関数かrepr()関数を使うよ。

str()関数は引数で与えた値を人間が読みやすい文字列に、repr()関数は引数で与えた値と等価な値を返すインタプリタ表現(リテラル表記)を文字列として返すよ。

str()関数とrepr()関数 - バリケンのPython日記 - pythonグループ

str()ってのもあるのかー

>>> repr (test2)
"'死にたみマックス! アザラ死ちゃん!\\n夫マルセイと暮らすバツイチ日記'"
>>> print(repr(test2))
'死にたみマックス! アザラ死ちゃん!\n夫マルセイと暮らすバツイチ日記'
>>> str(test2)
'死にたみマックス! アザラ死ちゃん!\n夫マルセイと暮らすバツイチ日記'
>>>
>>> test2[19:19]
''
>>> test2[20:20]
''
>>> test2[19:20]
'夫'
>>> test2[18:20]
'\n夫'
>>> test2[18:19]
'\n'
>>>

ん~? test2はtestの1~18文字+\n+testの20文字~だから\nは19、20番目だと思ったのだけど18、19番目?

f:id:elve:20180212115110p:plain
こういうイメージだったけど
f:id:elve:20180212115158p:plain
こうか

>>> test2[0:0]
''
>>> test2[1:1]
''
>>> test2[2:2]
''
>>> test2[2]
'た'
>>> test2[0]
'死'
>>> test[18]
'/'
>>> test[:18]
'死にたみマックス! アザラ死ちゃん!'
>>>

開始インデクスは常に含まれ、終了インデクスは常に含まれない

3. 形式ばらない Python の紹介 — Python 3.6.4 ドキュメント

ってそういうことかー。マイナス値も使えるらしいのね~汗

>>> test[-1]
'記'
>>> test[-2]
'日'
>>> test
'死にたみマックス! アザラ死ちゃん!/元夫マルセイと暮らすバツイチ日記'
>>> test[-35]
'死'
>>>

f:id:elve:20180212115925p:plain
こうかー

ふむふむー?