2016-09-24 2 views
0

추출 다양한 정보

다른 csv 파일

약관을 쓰기 전에 2 열 CSV 파일에서 이름, 날짜, 주소 등의 다양한 정보를 추출하고 싶습니다 개요

  1. 첫 번째 행은 항상 첫 번째 행이므로 행입니다. 정규식에 의해
  2. 추출 날짜은 (파이썬에서이 정규식입니까?) ## 상수 키워드 '도로'

에 의해/##/#### 형식
  • 추출 주소

    예 CSV 더미 소스 데이터 레퍼런스 파일 형식


    EXCEL
    에서 본 17,451,515,
     ID,DATA 
        88888,DADDY    
        88888,2/06/2016   
        88888,new issac road   
        99999,MUMMY    
        99999,samsung road 
        99999,12/02/2016  
    

    원하는 CSV 결과

    ID,Name,Address,DATE 
    8888,DADDY,new issac road,2/06/2016 
    9999,MUMMY,samsung road,12/02/2016 
    

    무엇 내가 지금까지 가지고 :

    import csv 
    from collections import defaultdict 
    
    columns = defaultdict(list) # each value in each column is appended to a list 
    
    with open('dummy_data.csv') as f: 
        reader = csv.DictReader(f) # read rows into a dictionary format 
        for row in reader: # read a row as {column1: value1, column2: value2,...} 
         for (k,v) in row.items(): # go over each column name and value 
          columns[k].append(v) # append the value into the appropriate list 
               # based on column name k 
    uniqueidstatement = columns['receipt_id'] 
    
    print uniqueidstatement 
    
    resultFile = open("wtf.csv",'wb') 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerow(uniqueidstatement) 
    
  • +0

    실제 문제는 무엇입니까? –

    +0

    while 루프는 좋은 아이디어일까요? – Perlinn

    +0

    나는 내가 말한 조건에 기초하여 어디서부터 시작 해야할지 전혀 모른다. – Perlinn

    답변

    0

    그룹화 할 수 있습니다 ID로하고 날짜입니다 결정할 수 있습니다 각 그룹 섹션 그리고 이것은 간단한 논리를 가진 주소입니다.

    import csv 
    from itertools import groupby 
    from operator import itemgetter 
    
    with open("test.csv") as f, open("out.csv", "w") as out: 
        reader = csv.reader(f) 
        next(reader) 
        writer = csv.writer(out) 
        writer.writerow(["ID","NAME","ADDRESS", "DATE"]) 
        groups = groupby(csv.reader(f), key=itemgetter(0)) 
        for k, v in groups: 
         id_, name = next(v) 
         add_date_1, add_date_2 = next(v)[1], next(v)[1] 
         date, add = (add_date_1, add_date_2) if "road" in add_date_2 else (add_date_2, add_date_1) 
         writer.writerow([id_, name, add, date]) 
    
    +0

    ID, NAME, ADDRESS, DATE 뒤에 공백 행이 있고 88888 DADDY 새 issac 도로 2/06/2016 (쉼표가 좋음) thats all. 좀 쉬었어요. 나머지는 어디로 갔습니까? – Perlinn

    +0

    'id_, name, _ = next (v)'>>>>>> 소스 csv 파일 열의 id를 참조하는 동안 name은 소스 csv 파일 이름 열을 참조합니까? 내가, _ – Perlinn

    +0

    삭제 귀하의 데이터가 쉼표로 빈 줄과 구분 기호로 구분됩니까? 또한 그 주석은 실제로 거기에 있습니까? –