目次
前
CSVファイル操作(Python)
知人からバーサライタ用テキストファイルを貰いました。
テキストファイルは、形式がCSVでした。
CSV形式なので、実際のパターンとして使うには
問題があると考えました。
1でLED点灯、0でLED消灯なのに、0は「,」で区切って
スペースもなし。スパースベクトル形式での保存のよう。
テキストエディタで0を入れるのは面倒なので、スクリプト
言語で、変換のコードを作成。
1行ごとに入力し、1行の内容を表示することから開始。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
print( e )
使ってみると、以下のようになります。
1行目では凡例があるので、これを出さないように
'A'が含まれているかで表示するしないとしておくと
よいでしょう。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
if e.find('A') <= -1 :
print( e )
実行してみると、以下。
16ビットにしたいので、最初の「,」は不要。
スライスを利用して、削除すればよいかと。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
if e.find('A') <= -1 :
ee = e[1:]
print( ee )
結果は、次のようになりました。
データ数は、16に対して15なので
1行目の最後に0を追加。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
if e.find('A') <= -1 :
ee = e[1:] + '0'
print( ee )
結果は、以下。
「,」の間に、0を入れる必要があるので
文字列置換で対応させます。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
if e.find('A') <= -1 :
ee = e[1:] + '0'
tmp = ee.replace(',,',',0,')
print( tmp )
実行すると、次のようになります。
まだ、「,,」があるので、0を入れます。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
for e in mytext :
if e.find('A') <= -1 :
ee = e[1:] + '0'
tmp = ee.replace(',,',',0,')
tmpx = tmp.replace(',,',',0,')
print( tmpx )
実行結果は、以下で16個の1か0の
ビットが得られています。
I/Oリダイレクトで、テキストファイルに
変換できますが、コマンドラインでファイル
名を指定して楽をすることを考えます。
#!/usr/bin/python3
import sys
args = sys.argv
with open( args[1] , encoding='utf-8' ) as f :
mytext = f.read().splitlines()
tmpy = []
for e in mytext :
if e.find('A') <= -1 :
ee = e[1:] + '0'
tmp = ee.replace(',,',',0,')
tmpx = tmp.replace(',,',',0,')
tmpy.append( tmpx )
f = open( args[2] , "w" )
for e in tmpy :
ee = e + '\n'
f.write( ee )
f.close()
このスクリプトは、次のように利用。
テキストファイルの内容は、画面表示で
得られるた内容と同じ。
目次
前