2017-12-20 30 views
-1

데이터를 사전 순으로 정렬하고 싶습니다.이 도움말은 아래 도움말을 통해 얻었습니다. 데이터가 정렬 된 후 모든 중복을 삭제하고 싶지만이 작업을 수행하는 방법을 알 수 없습니다. 데이터가 정렬되고 중복이 삭제되면이를 CSV 파일로 내보내려고합니다.중복 데이터를 정렬/삭제하고 CSV로 올바르게 출력

을 요약하면, 나는 데이터를 긁어 후 제대로

지금 CSV 파일로 출력

  • 을 정렬 한 후 중복을 삭제

    1. 로보고있어 나는 csv 파일에 쓰기 전에 이것을 출력한다.

      ['8 Mile', 'A Haunted House', 'Alien: Covenant', 'American Sniper', 'Baby Driver', 'Batman', 'Batman v Superman: Dawn of Justice (Extended Cut)', 'Beauty and the Beast (2017)'] 
      

      내 현재 코드로 내 CSV 파일에 쓸 때 맨 위에있는 모든 행과 각 이름을 자체 셀에 넣어야합니다. 나는 왜 그것을 하나의 행이 아닌 여러 행에 넣지 않는지를 알 수 없다.

      내 csv 파일에 쓸 때이 단락 바로 아래에서 시도했지만 예제와 같이 출력이 있어야하지만 행 사이에 공백이 있습니다. 또한 예제가 아니라 다른 셀의 각 문자와 함께 전자 메일을 씁니다.

      movielist2 = [] 
           for movie in movielist: 
            [movielist2.append(list(list(movie)))] 
           writer.writerows(movielist2) 
      

      변경 사항이 여러 행에 모두 인쇄되지 않는 이유를 알 수 없습니다. 당신은 당신의 예에서와 같이 키워드를 사용하여 데이터를 분할 시도 할 수

       all_images = browser.find_elements_by_css_selector('.border .gwt-Image') 
           #for image in all_images[:5]: # first five elements 
           for image in all_images: 
            #print('image:', image.get_attribute('src')) 
            #print('alt:', image.get_attribute('alt')) 
            movienames = image.get_attribute('alt') 
      
            #Add movie name to list 
            movielist.append(movienames) 
      
           #Scroll down the page to load more dynamic content 
           for _ in range(1,6): 
            ActionChains(browser).send_keys(Keys.PAGE_DOWN).perform() 
      
           time.sleep(5) 
      
          #Sort movie name list and delete duplicates 
          movielist = list(set(movielist)) 
          movielist.sort() 
      
          print(movielist) 
          #Write movie names to a csv file 
          file = "Example2.csv" 
          with open(file, 'w') as csvfile: 
           writer = csv.writer(csvfile, dialect='excel') 
           #writer.writerows([movielist]) 
      
           movielist2 = [] 
           for movie in movielist: 
            [movielist2.append(list(list(movie)))] 
           writer.writerows(movielist2) 
          print("Writing complete") 
      
  • +1

    [ask], 특히 [mcve] (MCVE)에 대한 부분과 [연구 노력이 얼마나 필요합니까?] (https://meta.stackoverflow.com/questions/261592/how-much-research)를 읽어보십시오. -effort-of-stack-overflow-users) 이것은 자신의 프로그램을 디버그하고 스스로 문제를 해결하는 데 도움이 될 것입니다. 그렇게하고 아직도 갇혀 있다면 MCVE를 게시하고, 시도한 내용과, 오류 메시지를 포함한 실행 결과를 게시하여 더 잘 도와 드릴 수 있습니다. – JeffC

    +0

    고마워요. 내가 다시 게시하기 전에 아프다. – ZacharyRW

    +0

    SO 표준을 충족시키기 위해이 질문을 수정해야합니다. – JeffC

    답변

    1

    제거 중복

    #Sort movie name list 
    movielist.sort() 
    

    하기 전에 라인

    추가
    movielist = list(set(movielist)) 
    

    당신이에서 중복을 허용하지 않는 것을 제외하고 집합,리스트처럼 설정을 변경하면 목록을 세트로 변환하여 모든 중복을 제거합니다.

    csv로 출력

    csvwriter.writerow는 목록의 목록을합니다. 외부 목록은 각 행에 대한 것이고 내부 목록은 해당 행의 각 열에 대한 목록입니다. 현재 바깥 쪽 목록에는 항목이 하나만 있습니다 ([movielist]). 그리고 무비 유저의 모든 것은 다양한 칼럼의 데이터입니다.

    작성자를 전달하는 대신 원하는 작업을 수행하려고합니다.이과 같이 수행 할 수 있습니다 :

    movielist2 = [] 
    for movie in movielist: 
        movielist2.append([movie]) 
    writer.writerows(movielist2) 
    

    편집 3 [ ["title1", "title2", "title3", "etc."] ] 당신이 [ ["title1"], ["title2"], ["title3"], ["etc."] ]

    편집 2처럼 더 그에게 뭔가를 전달하려는거야 형태에 행 데이터 : 대신 위를하고, 당신은 또한

    에 선

    #Add movie name to list 
    movielist.append(movienames) 
    

    을 변화시킬 수

    #Add movie name to list 
    movielist.append([movienames]) 
    

    그리고 그뿐만 아니라 작동합니다. writer.writerows() 함수에 전달 된 movielist가 목록 대신 목록의 목록인지 확인해야합니다.

    +0

    먼저 중복에 대한 도움을 주신 덕분에 완벽하게 작동하는 것 같습니다! – ZacharyRW

    +0

    나는 내 출력물로 지금 무슨 일이 벌어지고 있는지 이해하지만 "title1"에서 [ "title1"]로 전환하는 방법을 알고있다. 나는 그 일을 할 수있는 방법을 얻지 못하는 것 같습니다. – ZacharyRW

    +1

    목록 기능을 사용하여 문자열을 단일 항목 목록으로 전환 할 수 있습니다. 나는 당신이 이것을 어떻게 할 것인지를 보여줄 나의 대답을 업데이트했다. –

    0

    : 당신은 모든 중복 삭제됩니다있는 목록을 얻을 것이다 결과에

    temp ="example|example|example" 
    temp_List = temp.split("|") 
    result=set(temp_List) 
    

    . 그런 다음이 목록에 액세스하여 csv 파일에 배치 할 수 있습니다. 시도해보고 문제가있는 경우 알려주십시오. 해피 코딩 :)

    +0

    오, 죄송합니다. 내 질문을 편집하십시오. | 같은 줄에 새 세포를 나타 내기위한 것이 었습니다. 어떻게 그걸 할 거니? – ZacharyRW