Pythonの文字列処理のいろいろ
2021/05/04 categories:Python| tags:Python|
文字へのアクセス
文字列のインデックス
h | e | l | l | o | w | o | r | l | d | ! | ! | ! | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
-14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
コード
a = 'hello world!!!'
print(a[0])
print(a[1])
print(a[-1])
print(a[-5])
print(a[1:4])
print(a[-5:-3])
print(a[:4])
print(a[-5:])
実行結果
h
e
!
l
ell
ld
hell
ld!!!
作成
普通に代入
コード
a = 'hello world!!!'
print(a)
実行結果
hello world!!!
演算子*で繰り返し
コード
a = 'hello' * 3
print(a)
実行結果
hellohellohello
結合
演算子+で結合
コード
a = 'hello'
b = 'world!!!'
c = a + b
print(c)
実行結果
helloworld!!!
リストをjoinで結合
コード
a = 'hello'
b = 'world!!!'
c = ' '.join([a, b])
print(c)
実行結果
hello world!!!
分割
2文字毎に分割(正規表現)
コード
import re
a = 'abcdefghijk'
b = re.split('(..)',a)[1::2]
print(b)
実行結果
['ab', 'cd', 'ef', 'gh', 'ij']
2文字毎に分割(リスト内法表記)
コード
a = 'abcdefghijk'
b = [ a[i: i+2] for i in range(0, len(a), 2) ]
print(b)
実行結果
['ab', 'cd', 'ef', 'gh', 'ij', 'k']
検索
特定の文字の位置を検索
コード
a = 'abcabcabcabcabcabcabc'
b = a.index('c')
print(b)
実行結果
2
特定の文字の位置を全て取得
コード
a = 'abcabcabcabcabcabcabc'
b = [ n for n, s in enumerate(a) if s == 'c' ]
print(b)
実行結果
[2, 5, 8, 11, 14, 17, 20]
一番多い文字を取得
コード
a = 'abcdddddefffg'
b = max( set(a), key=a.count )
print(b)
実行結果
d
並べ替え
文字列を逆順にする
コード
a = 'abcdefg'
b = a[::-1]
print(b)
実行結果
gfedcba
取得
1文字飛ばしで文字列を取得
コード
a = 'a_b_c_d_e_f_g'
b = a[::2]
print(b)
実行結果
abcdefg
変換
数字の文字列を数値に変換
コード
a = '334'
b = int(a)
print(b, type(b))
実行結果
334 <class 'int'>
文字列をアスキーコードに変換
コード
a = '123abcABC'
b = [ ord(c) for c in a ]
print(b)
実行結果
[49, 50, 51, 97, 98, 99, 65, 66, 67]
文字列をバイト列に変換してリストに変換
コード
a = '123abcABC'
b = a.encode()
c = [c for c in b]
print(b)
print(c)
実行結果
b'123abcABC'
[49, 50, 51, 97, 98, 99, 65, 66, 67]
文字列をバイト列の文字列に変換
コード
a = '123xyzXYZ'
b = a.encode()
c = b.hex()
print(b, type(b))
print(c, type(c))
実行結果
b'123xyzXYZ' <class 'bytes'>
31323378797a58595a <class 'str'>