実現したいこと、全体フロー
プログラミングを初めて2週間ほどの初心者です。
自分なりにコードを書いてみましたが、上手くいきません。
内容は「SVGデータを読み込み、不要な開始タグとタグ内部の文字列、終了タグを除去」するというものです。
全体的なフローとしては
0. ファイルを選択して、ファイル名を取得する(def main():)
0. リストに記述されたタグ名で、取得ファイルから不要データを除去していく(def change():)
0. リスト内に既出でないタグがあれば処理を続行(データを除去)し、該当しない場合は新規ファイル名で保存
といった具合に動作すればと、思っております。
発生している問題・エラーメッセージ
File "svg_changer.py", line 18
with open(new_name, "a")
^
SyntaxError: invalid syntax
構文エラー??
flake8 py__でチェックしましたが、該当する点はありませんでした。
該当のソースコード
python
1 2#coding utf-8 3 4import re, os 5import tkinter.filedialog as tkfd 6 7#不要なタグ名をリストに格納 8unnecessary_tags = ["title"] 9 10#引数にファイル名、不要なタグと中身を空白に変更し保存 11def change(image): 12 with open(image. "r", encoding="utf-8") as f: 13 for row in f: 14 for tag in unnecessary_tags: 15 if tag in unnecessary_tags: 16 delete_tag = re.sub(r"<{}>.*</{}>".format(tag), "", row) 17 else: 18 new_file_name = "new_" + image 19 with open(new_file_name, "a") 20 break 21 22#ファイルを選択し、ファイル名を取得する 23def main(): 24 target_file = tkfd.askopenfilename() 25 filename = os.path.dirname(target_file) 26 change(filename) 27 28if __name__="__main__": 29 main() 30
疑問点
現時点で、3点ほど疑問があります。
- ファイルをtkfd.askopenfile()で開いた後に、with open()で再度開くのは正しいのか
- タグ内の要素が既出かどうかを判定するif文は正しいのか
- 正規表現に.format()を用いて変数を当てることができるのか
自身で、多くの文献を調べましたが、納得いく答えを見るけることができませんでした。
知識不足がお恥ずかしいですが、改善のヒントを教えていただきたいです。
また、不明な点、必要な追記情報などありましたら、お申し付けください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/17 06:17
退会済みユーザー
2018/02/17 06:21
2018/02/17 06:49
退会済みユーザー
2018/02/17 07:09
2018/02/17 08:00
2018/02/17 08:01
退会済みユーザー
2018/02/17 08:14
2018/02/18 12:32