【Python】複数の区切り文字を指定して文字列を配列に分割する

Code

はじまり

リサちゃん
リサちゃん

よーし、今回は区切り文字を複数指定して、文字列を配列に変換するスクリプトを作るぞー。

str.splitだと文字を一つしか指定できないからねえ。

今回のソース

get_words_by_seperators()がメイン処理になります。

get_indices_by_seperators()で区切り文字があるインデックスを取得して、

get_words_by_indices()でそのインデックスをによって文字列を配列に変換します。

src.py

def get_indices_by_seperators(word : str, seperators : list = [",", "、"]) -> list:
    sep_indices = []
    for sep in seperators:
        start = 0
        sep_index = 0
        while sep_index != -1:
            sep_index = word.find(sep, start)
            if sep_index != -1:
                sep_indices.append(sep_index)
            start = sep_index + 1
    sep_indices.append(len(word))
    print(sep_indices)
    sep_indices.sort()
    print(sep_indices)
    return sep_indices

def get_words_by_indices(word : str, indices : list) -> list:
    start = 0
    words = []
    for i in indices:
        words.append(word[start:i])
        start = i + 1
    print(words)
    return words

def get_words_by_seperators(word : str, seperators : list = [",", "、"] , spaces : list = [" ", " "]) -> list:
    indices = get_indices_by_seperators(word, seperators)
    words = get_words_by_indices(word, indices)
    words_without_space = []
    for word in words:
        words_without_space.append(remove_spaces_at_head_and_tail(word, spaces))
    print(words_without_space)
    return words_without_space

keyword = "python, node.js 、 gollila ,web"
actual = get_words_by_seperators(keyword)
print(actual)

出力

[6, 26, 16, 30]
[6, 16, 26, 30]
['python', ' node.js ', ' gollila ', 'web']
' node.js'
'ode.js'
' gollila'
'ollila'
['python', 'node.js', 'gollila', 'web']
['python', 'node.js', 'gollila', 'web']

おしまい

リサちゃん
リサちゃん

ふい〜、今回もおわり〜。

以上になります!

コメント

タイトルとURLをコピーしました