3
6

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 5 years have passed since last update.

テキスト整形ツール作成用メモ

Last updated at Posted at 2016-08-27

かじっただけのPythonで便利ツールを作るためのメモ。Pythonは簡単でいいなー。
NCプログラムの編集を想定。

  • ファイルの中身を全て読み込んでリストに放り込む
def readAll(fileName):
    with open(fileName, "r") as f
        ls = f.read().split("\n")
        return ls
#	f = open(fileName, "r")
#	ls = f.read().split("\n")
#	f.close()
	return ls
  • 正規表現でコメント(かっこで囲まれた文字)を削除
# 'O1000(SAMPLE)'
# → 'O1000'

import re

cmtptn = re.compile(r"\(.*?\)")
def removeComment(str):
	return cmtptn.sub("", str)
  • 正規表現でいい感じにパース
# 'G01X50.Y-50.Z-10.F500'
# → ['G01', 'X50.', 'Y-50.', 'Z-10.', 'F500']
ptr = re.compile(r"([A-Z#][^A-Z]+)")
def parse(str):
	p = ptr.findall(str)
	# print p
	return p
  • 引数で受け取ったファイルの中身を読む
import sys

if __name__ == "__main__":
	prm = sys.argv
	f1 = readAll(prm[1])

	for line in f1:
		print line
		# line = removeComment(line)
		# p = parse(line)

  • ファイルに書き込み
# printされたやつをリダイレクトしたほうが簡単そう
# open/writeするならwithを使う(readAll参照)
f = open(fname, "w")
f.write("foo")
f.close
  • 辞書
# coding: UTF-8

gcode = {
	"G00": u"位置決め"
	, "G01": u"直線補間"
}

# printするとき
print str(gcode).decode("unicode-escape")
  • パース結果を辞書に含まれるやつのみにする
filtered = filter( lambda cd:gcode.has_key(cd) , parsed)
  • 辞書から表示名取得
dsp = map( lambda cd:gcode[cd], filtered)
print str(dsp).decode("unicode-escape")
  • 待ち合わせ判定
# 判定条件が合っているかは微妙
wptn = re.compile(r"M\d{3,}P\d{2,}")
def isWaitCode(str):
	return wptn.match(str)
  • 改行なしで標準出力
def sysout(v):
	sys.stdout.write(str(v))

# 改行
def newline():
	sysout("\n")
3
6
2

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
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?