修正
「( )」の内部に「(」が含まれているケースに対応できていませんでした。「( )」は最小範囲となるようにコードを修正いたしました。
結論
正規表現を使用して、カッコの内部をマッチさせるようにします。そこからさらに内部のスペースを空文字に置換させることでタイトルのことができます。
サンプルコード
※2重カッコには対応しておりません。あらかじめご了承願います。
.py
import re
# 文字列のカッコの内部のスペースのみを削除
def remove_spaces_in_parentheses(input_string):
pattern = r'\(([^())]*)\)'
result = re.sub(pattern, lambda match: '(' + match.group(1).replace(' ', '') + ')', input_string)
return result
def main():
sample_string = ' h o ge ( ho ge h o ge hoge h o g e ) ho ge h o g e ( h o g e ) ) ( (ho ge) ho g e '
result = remove_spaces_in_parentheses(sample_string)
print(result)
if __name__ == '__main__':
main()
結果
h o ge (hogehogehogehoge) ho ge h o g e (hoge) ) ( (hoge) ho g e
以上です。