質問: 複数のcsvがあり、中身の情報はurlです。 Urlをドメインに整形して、 これらのcsvからシートをまたいで重複して存在しているドメインを探して抽出したいです。 あとどのシートとどのシートから抽出したのかも知りたいです。 自分では 対象の複数csvをバッチファイルで合体させて、エクセル関数で 1Url→ドメイン へ整形 2重複がないかチェック というやり方ですが、もう少し便利な方法があれば知りたいです。
回答: 以下のようにしてはどうでしょうか。 1. glob で指定ディレクトリ以下の csv ファイルを列挙して、読み込む。 2. urllib.parse.urlparse() を使って、ドメインまでを抽出する。 3. 結果をファイルに書き込む。 ``` import glob import os from urllib.parse import urlparse input_dir = 'myfolder' # URL が記載された csv があるフォルダ # myfolder 以下に csv ファイルが複数あるという前提 urls = [] # input_dir 以下の csv ファイルを読み込む。 for path in glob.glob(os.path.join(input_dir, '*.csv')): for url in open(path).read().splitlines(): # URL からドメインまでを取り出して、リストに追加する。 parsed = urlparse(url) domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed) urls.append(domain) # 重複を削除する。 urls = list(set(urls)) # 書き込む。 with open('output.csv', 'w') as f: f.writelines('\n'.join(urls)) ```