前提・実現したいこと
正規表現で文字列の置換を試しているのですが、「両端が空白」「先頭で後ろは空白」「先頭が空白で末尾」の3種類で色々な文字列を空白と置換しようとしています。
発生している問題・エラーメッセージ
'i like i ab ib cd an a 20 2b cd-30 30-cd 5 modeling modeling-i, 2020 and 1-modeling modeling j'という意味のない文章から、以下のコードで置換を試みています。 数字の置換、1文字の置換、deleteにある文字列の置換は期待した通りの置換が行えていますが、2文字の置換が上手く行えていません。 ab, cd, 20は置換して消えていますが、ib, anが置換していません。 どうすれば、ib, anも空白と置換できるでしょうか?
該当のソースコード
Python
1#入力 2delete = 'model|modeling' 3text = 'i like i ab ib cd an a 20 2b cd-30 30-cd 5 modeling modeling-i, 2020 and 1-modeling modeling j' 4 5text = re.sub(r'\s[0-9]+\s', ' ', text) #両方空白の数字削除 6text = re.sub(r'\s[0-9]+$', ' ', text) #先頭空白、末尾の数字置換 7text = re.sub(r'^[0-9]+\s', ' ', text) #先頭、末尾空白の数字置換 8 9text = re.sub(r'\s\S\s', ' ', text) #両方空白の1文字置換 10text = re.sub(r'\s\S$', ' ', text) #先頭空白、末尾の1文字置換 11text = re.sub(r'^\S\s', ' ', text) #先頭、末尾空白の1文字置換 12 13text = re.sub(r'\s\S\S\s', ' ', text) #両方空白の2文字削除 14text = re.sub(r'\s\S\S$', ' ', text) #先頭空白、末尾の2文字置換 15text = re.sub(r'^\S\S\s', ' ', text) #先頭、末尾空白の2文字置換 16 17text = re.sub(r'\s('+delete+')\s', ' ', text) #両方空白の文字列置換 18text = re.sub(r'\s('+delete+')$', ' ', text) #先頭空白、末尾の文字列置換 19text = re.sub(r'^('+delete+')\s', ' ', text) #先頭、末尾空白の文字列置換 20 21print (text) 22 23#実際の出力 24like ib an cd-30 30-cd modeling-i, and 1-modeling 25 26#期待していた出力 27like cd-30 30-cd modeling-i, and 1-modeling
回答1件
あなたの回答
tips
プレビュー