###前提・実現したいこと
ここに質問したいことを詳細に書いてください
PYTHON言語、初心者です。><
特定文字列(\t)で始まる行について、
空白で囲まれているか行末の文字列(単語)をすべて{...}でくくりたいと考えているのですが、
正規表現でどう表現したらよいかわからず、こちらに質問させていただきます。
(例)やりたいこと
\t aaa bbb cccc dd eeeeee
↓
\t {aaa} {bbb} {cccc} {dd} {eeeeee}
###発生している問題・エラーメッセージ
正規表現を使って、空白の置換を試みたのですが、 置換対象以外の空白も一緒に置換されてしまい、どう表現したらよいか苦戦しております。。 (例) \t aaa bbb cccc dd eeeeee ↓ 正)\t {aaa} {bbb} {cccc} {dd} {eeeeee} 誤)\t {aaa} {bbb} {cccc} {dd} {eeeeee}
###該当のソースコード
# -*- coding: utf-8 -*- import codecs import re # 対象の文字列 f_in = codecs.open('Sample_in.txt','r','utf-8') f_out = codecs.open('Sample_out.txt','w','utf-8') lines = f_in.readlines() lines2 = [] for line in lines: if line.startswith('\\t'): #\tで始まる行の空白で囲まれているか行末の文字列(単語)をすべて{...}でくくりたい。 #①行末(改行)前に"}"を付与 line = line.replace("\n", "}\n", 1) #②空白始まり文字列を" {"に置換 line = re.sub(r'\s+',r' {',line) #③残りの空白を"} "に置換 line = re.sub(r'\s',r'} ',line) #④誤変換した先頭"}"の削除 line = line.replace("} {", " {", 1) #⑤誤変換した最終文字列に改行を付与 line = line.replace("}} {", "}\n", 1) lines2.append(line) else: f_out.write(''.join(lines2)) f_in.close()
###試したこと
もともとの正規表現は以下を考えておりましたが、正しく変換されず、現在のソースとなっております。
line = re.sub(r'!^| +([ +|$])',r' {\1}\2',line)
###補足情報(言語/FW/ツール等のバージョンなど)
PYTHONのバージョンは、3.6で試しています。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。