2017-12-20 3 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ファイルに書き込むときにサンプルコードでこの段落のすぐ下で試してみましたが、出力は行内にあるはずですが行間にスペースがあります。また、それは例ではなく、別のセルの各文字とともにe x a m p l eを書き込みます。

      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はリストのリストを取ります。外側のリストは各行のためのものであり、内側のリストはその行の各列のものです。現在、外側のリストには1つの項目しかありません - [movielist]。そして、Movielistの中のすべてが、さまざまな列のデータです。

    あなたがしたいことは、ライターを渡すのではなく、それを行うことです。編集3

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

    これがそうのように行うことができます:あなたは何かもっとこの[ ["title1"], ["title2"], ["title3"], ["etc."] ]

    などの編集2にそれを渡したいとしている形[ ["title1", "title2", "title3", "etc."] ] である行のデータ:代わりに上記を行うので、あなたも

    にライン

    #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

    関連する問題