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'>  
        

Share post

Related Posts

Comments

comments powered by Disqus