2018년 8월 13일 월요일

Python module - CSV에서 " " 내의 , 처리하기


별 볼일 없는, 또는 이미 있을 수 있는 작은 툴이면서
업무하면서도 사용할 수 있을 것 같아 만들어 보았다.

오랜만에 작성해 보는 프로그램이라 그런지, 아이디어 자체도 대단한게 없고 난이도가 높은 함수도 아니고 python에 좀 친숙해져 보려고 시작한 것인데

본격적으로는 처음 vi로 작성해 보는 것도 있고 아직 디버깅 툴없이 print를 이용해 코딩하느라 (사실 디버깅이라고 할 것도 없고 나의 휴먼에러를 땜빵하기 위한 것임) 생각보다 버벅거리며 작성했다.

gettime
: ','로 분리된 csv file을 읽어들일때 " " 내에 ','가 있어 제대로 항목 분리가 안될 수 있어 이를 처리하는 함수임.

paramter :
- line
  : csv file에서 읽은 하나의 line
- numString (default 값 = False)
  : 숫자 항목은 string이 아닌 숫자로 변환 처리하는 flag

다음에는 docstring도 넣어볼까...



def getitem(line, numString=False):
    lst = []
    flag = False
    newitem = ''
    line = line.strip()

    if len(line):
        rawlist = line.split(',')
        for item in rawlist:

            # print("item = %s, newitem = %s" % (item, newitem))

            if (not flag) and item.isdigit() and numString:
                i = int(item)
                lst.append(i)
                continue

            if item[0] == '"':
                flag = True
                newitem = item
                continue

            if flag:
                newitem += item;
                if item[len(item)-1] == '"':
                    flag = False
                    lst.append(newitem)
                continue

            lst.append(item)

    return lst



if __name__ == "__main__":

    try:
           with open('testcsv.csv') as f:
               for l in f:
                   # print(l)
                   lst = getitem(l, True)
                   print(lst)
    except Exception as e:
        print(e)
    finally:
        print("End of Program")

댓글 1개:

200926.가오리코스 라이딩

9/26 골절인지 아닌지 확인 안됨. 이후 미세골절여부 확인 핸드폰을 드는 것도 어려움 9/29 x ray 다시 찍지 않고 이후 재 방문 요청 ...