Pythonの文字列処理の基本
この記事で解決すること
pythonの文字列処理の基本を思い出せます。
この記事の想定読者
- pythonの文字列処理を忘れた方
- python初心者の方
- 自分自身の備忘録
Pythonの文字列処理
文字列の括りは ' と " のどちらでも良い
text1 = 'テキストデータ1'
text2 = "テキストデータ2"
print(text1)
print(text2)
テキストデータ1
テキストデータ2
文字列に改行を入れる時
print('「テキスト\nデータ」\n')
print('「テキ\nスト\nデー\nタ」\n')
「テキスト
データ」
「テキ
スト
デー
タ」
print('''「テキスト
データ」
''')
print("""「テキスト
データ」
""")
「テキスト
データ」
「テキスト
データ」
文字列から、1文字だけ取り出すには
text = "Software Design"
print(text[0])
print(text[1])
S
o
text = "Software Design"
print(text[-1])
print(text[-2])
n
g
text = "Software Design"
print(text[0:8])
print(text[-11:-7])
print(text[:8])
print(text[9:])
print(text[:])
Software
ware
Software
Design
Software Design
文字列の分割
text = '''生徒1 10,20,30
生徒2 40,30,20
生徒3 25,30,40
'''
lines = text.splitlines()
print(lines)
['生徒1 10,20,30', '生徒2 40,30,20', '生徒3 25,30,40']
scores =[]
for line in lines:
student = line.split()
scores.append([student[0], student[1].split(',')])
print(scores)
[['生徒1', ['10', '20', '30']], ['生徒2', ['40', '30', '20']], ['生徒3', ['25', '30', '40']]]
文字列のフォーマット
for score in scores:
print(f"{score[0]}の平均点は、{(int(score[1][0])+int(score[1][1])+int(score[1][2]))/3:3.1f}")
生徒1の平均点は、20.0
生徒2の平均点は、30.0
生徒3の平均点は、31.7
最後の f
指定した精度で表現できない数字の場合は、123.456 のような固定小数点表記ではなく、123456e-3 のような指数表記で出力されます。
書式の最後に f をつけると固定小数点表記、e をつけると指数表記で出力されます。
print(f"|{'左寄せ':<8}|{'中央寄せ':^8}|{'右寄せ':>8}|")
|左寄せ | 中央寄せ | 右寄せ|
sales = [149820000, 253000, 9822, 91273000]
print(f'''{"年度":<5} | {"売上":^10}
--------+--------------
{2015:<7} | {sales[0]:12,}
{2016:<7} | {sales[1]:12,}
{2017:<7} | {sales[2]:12,}
{2018:<7} | {sales[3]:12,}
年度 | 売上
--------+--------------
2015 | 149,820,000
2016 | 253,000
2017 | 9,822
2018 | 91,273,000
value = 160
print(f'''
2進数: {value:8b}
8進数: {value:8o}
10進数:{value:8d}
16進数:{value:8x}
''')
2進数: 10100000
8進数: 240
10進数: 160
16進数: a0
デバッグに便利なフォーマット (3.8以降)
foo = 10; bar = 20
print(f'{foo=} {bar = } {foo + bar = }')
foo=10 bar = 20 foo + bar = 30
参考
- Software Design 2020年2月号 Pythonの文字列処理の基本