1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

繰り返しテキストデータ生成ツール「rpttxt」を作りました

Posted at

rpttxtとは?

こちら (https://github.com/nendo-code/rpttxt) で配布しております。

例えばこんな感じのデータを作りたいとします。

output.txt
{
	"id": 1,
	"name": "John",
	"age": 21
}
{
	"id": 2,
	"name": "Paul",
	"age": 35
}
{
	"id": 3,
	"name": "Tom",
	"age": 64
}

このデータを作る場合、あなたならどうしますか?
私なら、適当に手作業で済ませるのであればこんな感じにすると思います。

まず1項目分作る。

step1.txt
{
	"id": 1,
	"name": "John",
	"age": 21
}

必要な項目数分コピペする。

step2.txt
{
	"id": 1,
	"name": "John",
	"age": 21
}
{
	"id": 1,
	"name": "John",
	"age": 21
}
{
	"id": 1,
	"name": "John",
	"age": 21
}

3.
各項目の値を狙いの値に書き換える。

step3.txt
{
	"id": 1,
	"name": "John",
	"age": 21
}
{
	"id": 2,
	"name": "Paul",
	"age": 35
}
{
	"id": 3,
	"name": "Tom",
	"age": 64
}

まあこんな感じで手作業してもいいですが、件数が多いとダルいしミスも発生しやすいです。
データはデータ、テンプレートはテンプレートで分けて書けるといいなあ、と私は思いました。
なので、

テンプレートを書き

template.txt
{
	"id": {No},
	"name": "{Name}",
	"age": {Age}
}

データをcsvで書いて(またはExcel等でcsvでエクスポートして)

data.csv
{No},{Name},{Age}
1,John,21
2,Paul,35
3,Tom,64

それらを食わせると下記のような出力が得られるプログラムを作成しました。
それがrpttxtです。

output.txt
{
	"id": 1,
	"name": "John",
	"age": 21
}
{
	"id": 2,
	"name": "Paul",
	"age": 35
}
{
	"id": 3,
	"name": "Tom",
	"age": 64
}

なんで作ったの?

世の中に似たツールはありそうな気はしましたが、求めている操作感のものがパッと見つからなかったので、車輪の再発明しました。
あと、「UNIXという考え方―その設計思想と哲学」という本を読んで素晴らしいなあと思ったので、それっぽいシンプルなインターフェースのコマンドラインツールにしました。

(例)コマンドラインでの実行

$ python3 rpttxt.py template.txt data.csv > output.txt

なにで作ったの?

python3で書いて、Windows用のバイナリはPyInstallerで作りました。
PyInstallerは楽チンでとてもいいツールです。
あと、Windowsだとコマンドライン立ち上げるのがダルいので一発で変換かけるバッチファイルもオマケで付けました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?