#1データずつ改行されたCSVデータを所定順序のデータセットエレメントに並べ直し、データセットをCSVで保存する

 

#ライブラリ

import csv

 

#羅列データCSVを読み込む

#デリミタ=コンマ

#情報区切=指定文字列

#データ内の項目順序=不定、重複あり&重複時は一番新しいものを採用

 

#羅列データを読み込むCSVのパス

path_data_input = "C:/Users/shienkikou11/Desktop/VSCode/convert_CSV/test_input.csv"

#データセットを書出すCSVのパス

path_data_output = "C:/Users/shienkikou11/Desktop/VSCode/convert_CSV/test_output.csv"

 

#データセット内のエレメントの識別文字列

neq="NEQ$"

loc="LOC$"

dlm="DLM$"

usr="USR$"

dtm="DTM$"

 

#羅列データCSVからデータを読む

#エンコードをutf_8でBOM付きにするとcp932デコードエラーが出ない。

with open(path_data_input, encoding="utf_8_sig") as f:

    #print(f.read())

    lists_element = []

    element_dataset = []

    reader = csv.reader(f)

    #データセット内のエレメントの初期化

    neq_element=""

    loc_element=""

    dlm_element="" #Not in Use

    usr_element="USR$0050"

    dtm_element="2023/09/01 12:00"

 

    for row in reader:

        element = str(row[0])

        #print(element)

        if neq in element:

            neq_element=element

        elif loc in element:

            loc_element=element

        elif usr in element:

            usr_element=element

        elif dtm in element:

            dtm_element=element

        elif dlm in element:

            if len(neq_element)==0 or len(loc_element)==0 :

                print("Dataset ERROR by missing NEQ$ and/or LOC$ ")

            else:

                element_dataset=[neq_element,loc_element,usr_element,dtm_element]

                #print(element_dataset)

                lists_element.append(element_dataset)

            #データセット内のエレメントのクリア

            element_dataset=""

            neq_element=""

            loc_element=""

#print(lists_element)

with open(path_data_output, 'w',newline="") as fo:

    writer = csv.writer(fo)

    writer.writerows(lists_element)

with open(path_data_output, encoding="utf_8_sig") as fo2:

    reader = csv.reader(fo2)

    for row in reader:

        print(row)

 

print("process end")