スクレイピングをしていて取得した文字列を配列に格納したとき
配列内の余分な改行が・・・
そんな時に置換 or 削除したいなって場面に遭遇したので
備忘録の意味も込めて
#やりたい事
str_list = ['あい\nうえお', 'かいくけこ', 'さし\nすせ\nそ', 'たちつて\nと', 'なに\nぬ\nね\nの']
str_list2 = [['あい\nうえお', 'かいくけこ'], ['さし\nすせ\nそ', 'たちつて\nと', 'なに\nぬ\nね\nの'], ['はひふ\nへほ', 'ま\nみむめも\n'], ['やゆよ'], ['らり\nるれろ', 'わをん']]
こんな感じでスクレイピングしていると欲しい文字列以外が含まれていたりする
これを簡素にしたい
普通
replace_list = []
for s in str_list:
if '\n' in s:
text = s.replace('\n', '')
replace_list.append(text)
else:
replace_list.append(s)
print(replace_list)
>>['あいうえお', 'かいくけこ', 'さしすせそ', 'たちつてと', 'なにぬねの']
for i in str_list2:
for s in i:
if '\n' in s:
text = s.replace('\n', '')
replace_list2.append(text)
else:
replace_list2.append(s)
replace_list3.append(replace_list2)
replace_list2 = []
print(replace_list3)
>>[['あいうえお', 'かいくけこ'], ['さしすせそ', 'たちつてと', 'なにぬねの'], ['はひふへほ', 'まみむめも'], ['やゆよ'], ['らりるれろ', 'わをん']]
####簡素にできた
内包表記
replace_list = [s.replace('\n', '') for s in str_list]
replace_list2 = [[s.replace('\n', '') for s in text] for text in str_list2]
print(replace_list)
print(replace_list2)
>>['あいうえお', 'かいくけこ', 'さしすせそ', 'たちつてと', 'なにぬねの']
>>[['あいうえお', 'かいくけこ'], ['さしすせそ', 'たちつてと', 'なにぬねの'], ['はひふへほ', 'まみむめも'], ['やゆよ'], ['らりるれろ', 'わをん']]
内包表記を使っただけだけどこっちのほうがぽい