スタートページJavaScript他言語Python 目次>    ←Pythonの文法    →配列の生成と要素表現

文字列の取扱とPrint関数


文字列

文字列全般

●文字列は配列である。
  s = "Hello" s[1] は「e」
  文字列はその要素を変更できない s[0] = 'h' はエラーになる
●len(文字列) 文字列長さ(文字数)
  len(s) は5になる
●最後の文字を取り出す
  s[4]とするのではlen(s)を知る必要がある→s[-1]でよい
●部分取出し 文字列[先頭:最後]   デフォルト 先頭=0、最後=len(s)
  s[1:4] → 「ell」
●文字の繰り返し *を用いる
  s*2 → 'HelloHello'

文字列と数値の変換

  数値 = int(文字列)
  数値 = float(文字列)
  文字列 = str(数値)

●画面入力はすべて文字列とみなされる
  x = input('値を入れてください: ')
  に対して数値を入力しても文字列になってしまう
  数値 = int(文字列) などの変換が必要

●数字チェック
  元の文字列.isdigit()   全て数字ならTrue、そうでなければFalse

文字列の検索

  有無 = 検索文字列 in 元の文字列     True/False が戻る

  最初位置 = 元の文字列.find(検索文字列)     なければ-1を戻す
  最後位置 = 元の文字列.rfind(検索文字列)
  最初位置 = 元の文字列.index(検索文字列)     なければエラー(例外発生)
  最後位置 = 元の文字列.rindex(検索文字列)

  元の文字列.startswith(先頭文字列)         合致すればTrue
  元の文字列.endswith(先頭文字列)

文字列の分割・結合

  文字列リスト = 元の文字列.split(区切り文字)
    最初の要素だけが欲しいときは、分割回数を1にすると、要素が2つのベクトルになる
    文字列リスト = 元の文字列.split(区切り文字, 1)
  文字列 = 区切り文字.join(文字列リスト)

例 空白区切りの文字列をカンマ区切りの文字列にする
    空白を区切りにしたリスト = 空白区切りの文字列.split()
    カンマ区切りの文字列 = ','.join(空白を区切りにしたリスト)

文字列の加工

●空白文字の削除
  削除後の文字列 = 元の文字列.strip()  先頭/末尾にある空白文字を削除(' '内は対象外)
                             .istrip   先頭にある空白文字を削除
                             .rstrip   末尾にある空白文字を削除
●文字列の置換
  文字列は変更できない s[0] = 'h' などはエラーになる
  元の文字列.replace(old, new, count) count省略時は全てを対象

●文字列の左寄せ/中央寄せ/右寄せ ljust/center/rjustメソッド
  元の文字列.center(文字数, 詰める文字) 詰める文字を省略すると空白

print関数

print関数は豊富な編集機能をもっています。反面、それを使いこなすのはかなり面倒です。結果を他人に見せる用途以外では深入りしないことが賢明だと思います。

基本事項

●数値変数だけならは「,」で区切る
  x = 12
  y = 12.3
  print(x, y, x+y)    # 12 12.3 24.3
●変数間の区切り
 デフォルトでは空白区切。print() の最後に、sep=',' のように区切記号を挿入できる。
  x = 1
  y = 2
  print(x, y)           # 1 2
  print(x, y, sep=',')  # 1,2
●複数文字列は + で結合される
  s = "abc"
  print('s1の値は' + s + 'です')  # 「sの値はabcです」
●「文字列 + 数値」の表現はできない
  x = 10
  print('答は' + x + 'になる')   # エラー
  単純に「,」で区切ればよい。ただし空白区切りが生じる。
  print('答は', x, 'になる')     # 「答は 10 になる」

改行関連

●print()内で改行するには \n を用いる
  print('1行目\n2行目')
●print() は自動改行するが、最後に end='' を指定すると改行しなくできる、
  print('改行する')
  print('改行しない', end='')
●'''~'''、"""~"""(トリプルクオート文字列)
  改行をその通りに記述
  s = '''
    1行目
    2行目
    3行目
    '''
  print(s)

メソッドによる編集

●r'文字列' (raw文字列)
  \を含む文字列をそのまま表記する
  s =  r'C:\Users\deepinsider\Documents\work\data.txt'
  print(s)
●f'{式}' (フォーマット済み文字列)
  {式}の部分に値が入る
  x = 1
  y = 2
  s = f'{x} + {y} = {x + y}'
  print(s)      # 「1 + 2 = 3」が表示 

formatメソッド
  name = '中野"
  print('私の名前は{}です'.format(name))

  x = 1
  y = 2
  print('x + y = {}'.format(x + y))          # x + y = 3
  print('{} + {} = {}'.format(x, y, x + y))  # 複数の{}が可能 1 + 2 = 3
  print('{x} + {y} = {結果}'.format(結果=x+y, x=x, y=y)) # 名称を付けられる 1 + 2 = 3
  print('{x:8} + {y:8} = {結果:8}'.format(結果=x+y, x=x, y=y)) 表示幅の指定

{x:オプション}による桁数調整

  '<':左寄せ
  '>':右寄せ
  '^':中央寄せ
  '=':符号を表示する場合、符号の後をパディング文字で埋める
  print('{x:<8} + {y:8} = {結果:0=8}'.format(結果=x+y, x=x, y=y)) 

  '+':正数と負数の両方に常に符号を付加する
  '-':負数にのみ符号を付加する(省略時の動作)
  ' '(空白文字):正数の前には空白文字を付加し、負数には符号を付加する

●有効桁数の指定
  x=1234.5678
  y=98.965432
  print('{x:8.6}, {y:8.4}'.format(x=x, y=y)) # 1234.56,  98.97
●小数点以下の桁数指定
  print('{x:8.2f}, {y:8.4f}'.format(x=x, y=y)) # 234.57,  98.9654

%演算子による書式指定

  '書式指定に使う変換指定子を含んだ文字列' % 埋め込む値をまとめたタプル
  %(マップキー)「変換フラグ」「最小の表示幅」「.精度」「変換型」
変換型
  "d" 符号付き 10 進整数
  "o" 符号付き 8 進数
  "x" 符号付き 16 進数 (小文字)
  "e" 指数表記の浮動小数点数 (小文字)
  "f" 10 進浮動小数点数
  "g" 浮動小数点数。
  "s" 文字列

●%d  整数表示
  x = 1234
  y = -98
  print('%d + %d = %d' % (x, y, x+y)) # 1234 + -98 = 1136

  x = 1234.56789
  y = -98.765432
  print('%d + %d = %d' % (x, y, x+y)) # 1234 + -98 = 1135

●固定小数点表示(表示幅.小数点以下)
  x = 1234.56789
  y = -98.765432
  print('%8.2f + %8.4f = %8.2f' % (x, y, x+y)) #  1234.57 + -98.7654 =  1135.80

●浮動小数点
  x1 = 123.456789
  x2 = 12345678.9
  y1 = 0.01234567
  y2 = 0.000000123
  print('x1=%e, x2=%e, y1=%e, y2=%e' % (x1,x2,y1,y2))
      # x1=1.234568e+02, x2=1.234568e+07, y1=1.234567e-02, y2=1.230000e-07
  print('x1=%g, x2=%g, y1=%g, y2=%g' % (x1,x2,y1,y2))
      # x1=123.457, x2=1.23457e+07, y1=0.0123457, y2=1.23e-07

●マップキー(順序指定){ } にする
  x = 1234
  y = -98
  print('%(x)d + %(y)d = %(x+y)d' % {'x+y':x+y, 'x':x, 'y':y}) # 1234 + -98 = 1136