質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2983閲覧

あるフォーマットで書かれたテキストを、別のフォーマットへ変換したい

maruhachi

総合スコア26

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/07/04 05:59

具体的にやりたいこと

フォーマットに従って書かれたファイルを、別のフォーマットへ変換したい。
そうすることで、GUIで設定されたジョブネット構成図を、png等の図として出力し、ドキュメント化できる。

JP1の定義ファイルは以下のような形で書かれています。
JP1リファレンス

実際の定義情報はこのような形です。(中間抜粋)

{ ty=n; cm="ロールバック"; sz=10x8; el=ABT,n,+400+48; el=OCP,n,+80+48; el=OEF,n,+240+48; ar=(f=OEF,t=ABT,seq); ar=(f=OCP,t=REF,seq); sd=1,en; st=1,+00:00; sh=1,ca; shd=1,2; rg=30; pr=3; unit=ABT; { ty=n; cm="後バッチ"; sz=10x8; el=ABT-101,j,+80+48; el=ABT-201,j,+80+144; sd=0,ud; unit=ABT-101; { ty=j; cm="バッチ実行"; sc="/release/shell/batch.sh"; prm="one 90"; so="ABT-101.log"; se="ABT-101.log"; tho=0; eu=def; ex="110"; }

変換先としては、PlantUMLの状態遷移図 の形式です。

@startuml{plantuml_class_sample.png} title <size:20>ロールバック</size> state 後バッチ { Job1 --> Job2 Job2 --> Job3 Job3 --> Job4 Job4 --> Job5 Job3 --> Job6 Job6 --> Job7 Job5 --> Job8 Job7 --> Job8 Job1: description: バッチ実行 Job1: sh: /release/shell/batch.sh Job1: parameter "one 90" } state Group2 { Job101 --> Job202 } 後バッチ --> Group2 @enduml

これをAtomのPlantUML Viewerで画像出力すると、
plantUML 出力画像サンプル
のようになります。

このような、決められたフォーマットで書かれたファイルを別のフォーマットに変換したいです。
自分が探していた中では、こちらのブログのように、パーサーを使うなり作るなりすれば良いのかなと思っていました。
よろしければ、このあたりをうまく解決できる方法・ツール等、知恵を貸していただけませんでしょうか。

カモフラージュのため、色々記載に合わない箇所があるかもしれません。申し訳ありません、長くなりましたが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JP1からJSONに変換するパーサーは、提示されたブログからダウンロードできるようです。
ply(yacc&lex)でパースしているので、plyモジュールが必要ですね。

jsonに変換できましたら、Pythonで標準に付いているjsonモジュールでPythonオブジェクトに変換できます。
PythonオブジェクトからPlantUMLへの変換ですが、ご自分でプログラムを組むことになると思います。

投稿2017/07/04 06:13

編集2017/07/04 07:34
pashango2

総合スコア930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maruhachi

2017/07/10 06:51

ご回答ありがとうございます。 ブログにあったPythonスクリプトはそのまま使ってもエラーが出てしまい、Pythonにうとい自分はdefファイルのフォーマットが悪いのかスクリプトが悪いのか判断がつかず悩んでおりました。 おっしゃる通り、まずは知っている形式になんとか持っていき、最終的にPlantUMLを目指そうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問