はじまり
リサちゃん
よーし、今回は区切り文字を複数指定して、文字列を配列に変換するスクリプトを作るぞー。
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']
おしまい
リサちゃん
ふい〜、今回もおわり〜。
以上になります!
コメント