2017-12-24 8 views
0

私はファイル内のすべての名前の最初の文字を大文字にし、他の文字を小文字にしたいCSVファイルを持っています。 .title()を使用してこれを達成しようとしました。大文字(CleanNames.csv)を使用したいCSVファイルは、これらの名前を別のCSV(ValidNames.csv)から「引き出す」組織化されていない名前のリスト(10000DirtyNames.csv)。ここでCSVファイルで.title()を使用する

は、私がこれまで持っているものです。

import re 
import csv 

with open("10000DirtyNames.csv", "r") as file: 

    with open('ValidNames.csv', 'w+') as ValidNames_file: 
     write = csv.writer(ValidNames_file, delimiter=','); 
     data = file.read(); 
     pattern = "[A-Za-z]{1,}"; 
     search = re.findall(pattern, data); 
     write.writerow(search); 

     with open('CleanNames.csv', 'w') as CleanNames_file: 
      write2 = csv.writer(CleanNames_file, delimiter=','); 
      data2 = ValidNames_file.read(); 
      write2.writerow(data2.title()); 

それはCleanName.csvが全く取り込まれていないことを除いて動作します。エラーメッセージはありません。私は間違って何をしていますか?

+0

'オープン()'モードは、いくつかのオペレーティングシステム上でこの唯一の問題かかわらず、 'wb'ない' w'でなければなりません。小さなサンプルファイルを見せてください。 –

+0

'w'ではなく' w + 'であるべきことを意味しますか?ありがとう、私は問題を解決! – user3902990

答えて

0

これは私の考えではありますが、同様の問題を解決するために必要なときに誰かが解決策を投稿すると思いました。

import re 
import csv 



with open("10000DirtyNames.csv", "r") as file: 

    with open('ValidNames.csv', 'w+') as ValidNames_file: 
     write = csv.writer(ValidNames_file, delimiter=','); 
     data = file.read(); 
     pattern = "[A-Za-z]{1,}"; 
     search = re.findall(pattern, data); 
     write.writerow(search); 

     with open('ValidNames.csv') as ValidNames_file, open('CleanNames.csv', 'w') as CleanNames_file: 
      for name in ValidNames_file: 
       CleanNames_file.write(name.title()) 
関連する問題