Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

csvの加工

ちょっと進化した。

import csv
import pprint
import sys
import os
import glob

# usage
# python3 transErrorMessage.py

def replaceRet(txt: str):
    return txt.replace("\n", "\\n")

def wrapDQ(txt):
    return "\""+txt+"\""

surfix = "_SEMISELF"



def main(filepath):
    if len(filepath)>0:
        transFile(filepath)
        return
    
    l = glob.glob("./*.csv")
    for f in l:
        transFile(f)
        return
    

def transFile(filePath):
    translatedText = transTexts(filePath)
    filenameWithExt = os.path.basename(filePath)
    filename = os.path.splitext(filenameWithExt)[0]
    
    newfilepath = "./out/error_"+filename+".csv"

    # フォルダなければ作る
    file_path = os.path.dirname(newfilepath)
    if not os.path.exists(file_path):
        os.makedirs(file_path)

    with open(newfilepath,"w") as f:
        f.write(translatedText)



def transTexts(filePath):
    returnText = ""
    with open(filePath) as f:
        # print(f.read())

        reader = csv.reader(f)
        skip = True
        for row in reader:
            # print(row[0])
            if len(row)<=5:# row[5]までつかうので
                continue
            if skip:            
                if row[0] == "No":
                    skip = False
                    continue
                else:
                    continue

            message = wrapDQ(replaceRet(row[4]))
            message_SS = wrapDQ(replaceRet(row[5]))
            text = wrapDQ(row[1]) + " = " + message + ";"+"\n"
            text_ss = wrapDQ(row[1]+surfix) + " = " + message_SS + ";"+"\n"
            returnText = returnText + text + text_ss
    
    return returnText




# 実行部
filepath = ""
if len(sys.argv)>2:
    filepath = sys.argv[1]

main(filepath)