2014-03-13 6 views
0

나는 csv가 사용자의 연락처 정보와 현재 그룹으로 구성되어 있기 때문에 사본이 많은 CSV 파일의 전체 열을 포함하는 배열을 가지고 있습니다.Python은 배열에서 중복을 제거합니다.

CSV의 사용자가 그룹에 있지만 여러 사용자가 동일한 그룹에있는 경우이 Python 스크립트의 요점은 행의 같은 그룹에있는 모든 사용자를 정렬하는 것과 같습니다. 미안하지만 더 많은 ppl을 혼란스럽게하지 않도록 주 스레드를 업데이트 할 것입니다.

이 스크립트의 최종 목표는이 그룹에 속한 사용자의 전화 번호와 함께 행을 그룹에 넣는 것입니다.

GroupName, PhoneNumber1, PhoneNumber2, PhoneNumber3, PhoneNumber4, etc 

예 :

Name, email, phonenumber, **group** 
name1, name2, number1,  ExampleGroup 

그래서 나는이 사용하여 정렬 시도했다 : https://wiki.python.org/moin/HowTo/Sorting

을 그리고 반환

['a', ' ', 'E', 'g', 'i', 's', 'm', 'M', 'L', 'o', 'l', 'p', 'S', 'R', 't', 'h', 'e', 'n'] 

전에서 사용하고 코드를 순간 :

import csv 
    with open('Configtool.csv', 'rb') as f: 
     reader = csv.reader(f, delimiter=';', quoting=csv.QUOTE_NONE) 
     for row in reader: 
     groupname = row[5] 
     #print groupname 
     sortedgroup = list(set(groupname)) 
     print sortedgroup 
당신의 도움을 많이 감사합니다

, 내가 파이썬에 새로 온 사람

참고 그렇게 나를 쉽게 이동하십시오 : P

+1

몰라 'list (set (groupname))'이 일을 정렬하는 방법이라고 생각한 것. 링크 된 페이지에 아무 것도 나타나지 않습니다. – user2357112

+0

파일에 복제 된 내용 .. 전체 열이 복제되었거나 열의 요소가 복제 되었습니까? –

+0

비슷한 문제가있는 다른 stackoverflow 스레드에서 찾았습니다. @Rajsubit CSV에있는 사용자는 그룹에 있지만 여러 사용자가 같은 그룹에있는 경우이 Python 스크립트의 요점은 행에있는 같은 그룹에있는 모든 사용자를 정렬하는 것과 같습니다. 미안하지만 더 많은 ppl을 혼란스럽게하지 않도록 주 스레드를 업데이트 할 것입니다. –

답변

0
당신은 같은 그룹의 모든 행을 얻을 itertools.groupby을 사용할 수 있습니다

및 그런 다음 사전 독해력을 사용하여 그룹을 전화 번호에 매핑하는 사전을 작성하십시오.

import itertools 
groups = itertools.groupby(reader, key=lambda row: row[3]) 
d = {group: [row[2] for row in rows] for (group, rows) in groups} 

는 (그렇지 않으면 reader 반복자가 이미 소진됩니다에 위치 3 및 행의 위치 2의 전화 번호. 그룹이 또한 당신이 당신의 루프를 제거해야 할 수도 있다고 가정.)

+0

이것은 너무 특정 확장 그룹 및 그룹의 하나의 전화 번호를 반환합니다 다음 동일한 그룹 있지만 다른 전화 번호를 반환합니다 작동합니다. 그룹을 복제 할 수 없으며 동일한 그룹을 가진 모든 사용자의 번호를 한 행에 모두 반환해야합니다. –

+0

그룹이 실제로 동일하면 작동합니다. csv에 공백이있을 수 있습니까? 예 : 'group1'및 'group1'과 같은 그룹이 있습니까? 이것을 사용하십시오 :'lines_clean = [map (str.strip, row) in row in reader]' –

+0

그 덕분에 =) –

관련 문제