国産でないログソフトを使う一番のネックは QSL プリントであろうか。
CQRLOG のエクスポートする csv を libreOffice Calc に読み込み、
- via 列設置、IF 関数で via 入力、
- 6 ワク設置、LEFT, MID 関数で出力
- 不適切箇所修正、余分な列削除
- JA はエリア区分せよとのことで JA 別ファイル。
- ナンバーでソート
をやって、やっとプリントの準備ができる。
しかしこの作業をするのが、寄る年波に勝てずだんだん億劫に・・・
そこで年も考えず、csv なら python (私はフランス語風にピトンと読む)でできないかと考えたが、無論 python の知識があるわけでない。
AI に相談するも六文字とリマークスの位置関係で全く無駄な一日になったことも。
アキラメてログオフしてから考えた。 不自然だが、六文字の列を末尾にすれば、リマークスが非表示だったりを回避できるのではと考え csv を作り変えてみた。結果成功だった。
となれば、列の入れ替えを AI に相談すればいい。
結果は、via が文字分解されたり、リマークスが文字分解されたり。
どうやら入れ替えによっての列指定がマチガッていると気づいた。
ソレを修正してやると期待通りの cxv を得ることができた。
読み込んだ csv 注意は
Date,Time,Call,Mode,Freq,RSTs,RSTr,Rmks,Mgr
因みにここでは /P や KH2/ などは考慮していない。 AI にも相談したが不成功に終わった。
import csv
# 入力ファイル名と出力ファイル名
input_file = 'input.csv'
output_file = 'output.csv'
# データを処理して出力ファイルに書き込む関数
def process_csv(input_file, output_file):
with open(input_file, 'r', newline='', encoding='utf-8') as infile, \
open(output_file, 'w', newline='', encoding='utf-8') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
# 行の長さが足りない場合はスキップする
if len(row) < 10:
continue
# H列が空の場合にC列をコピー
if not row[7]:
row[7] = row[2]
else:
row.insert(9, 'via') # H列が空でない場合にJ列に"via"を追加
# I列とJ列の値を入れ替える
row[8], row[9] = row[9], row[8]
# H列のデータをK列以降の列に一文字ずつのデータとして書き込む
h_chars = list(row[7])
row[10:10+len(h_chars)] = h_chars
# 出力ファイルに書き込む
writer.writerow(row)
# CSVファイルの処理を実行
process_csv(input_file, output_file)
最初 9 列の csv だったので
Traceback (most recent call last):
File "/home/NAME/TEST.py", line 33, in <module>
process_csv(input_file, output_file)
File "/home/NAME/TEST.py", line 17, in process_csv
row[8], row[9] = row[9], row[8]
IndexError: list index out of range
と叱られてしまった。どうやらプラス一列は必要のようだ。
それくらいは sed でやっても知れてる。
sed -e "s/\$/,,/"