2017-12-22 1 views
0

には、以下のCSVを考えてみましょう:オープンCSV、テキストを交換し、ラインで新しい文字列行を追加し、元のファイルに保存

"""tom""" 
""fred"" 
"henry" 
Jack 
"""mary""" 

私が定義されてきたいくつかの文字について以下のルックス、それらを削除し、その文字列を追加します各行(行)の終わりに。それは "うまくいく"とは言いますが、私はそれについて正しいことをしているのか分かりません....私の意見では、元のファイルを開いて編集して保存する必要があります。私は何千ものCSVファイルに対してこれを実行するので、かなり混乱することがあります。

import csv 
s = open('Book1.csv','r').read() 
chars = ('$','%','^','*','"','_') # etc 
for c in chars: 
    s = ''.join(s.split(c)) 
out_file = open('Book2.csv','w') 
out_file.write(s) 
out_file.close() 
output = "" 
file_name = 'Book2.csv' 
string_to_add = "@bigfoot.com" 
with open(file_name, 'r') as f: 
    file_lines = [''.join([x.strip(), string_to_add, '\n']) for x in f.readlines()] 
with open(file_name, 'w') as f: 
    f.writelines(file_lines) 


[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
+1

を追加し、同じファイルに行を書き戻します。文字列の中央に文字を入れることはできますか? –

+0

なぜファイル行を読んでいないのですか?replace + addを実行して元のファイルに書き戻しますか? –

+0

いいえ文字は常に元の文字列の両端にあり、文字の削除後に追加する文字列は最後に付加されます – tpcolson

答えて

1

ファイルを一度開くだけで、一度書き込むだけで、2つの別々のファイルを使用する必要はありません。ファイルの読み書きが少なくてすむほど、スクリプトは高速に実行されます。

数付帯点:文字を置き換えるの

をチェックアウトしたいかもしれないあなたが実際にあなたのコード内でのすべてのcsvモジュールを使用しているように、それは、この例からは見えません。

は、ここで私は示唆しているものです:あなたはそれを過度に複雑だ

chars = ('$', '%', '^', '*', '"', '_') 
string_to_add = '@bigfoot.com' 

with open('tmp', 'r') as f: 
    s = f.read() 

# Replace unwanted characters 
for c in chars: 
    s = s.replace(c, '') 

# Append line ending 
s = '\n'.join(line + string_to_add for line in s.splitlines()) 

with open('tmp', 'w') as f: 
    f.write(s) 
1

最初に、行にstripを適用して、文字列の開始または終了時のすべての文字を削除します(改行を含むか、機能しません)。 replaceのループを使用すると、stripがあなたが望むものとまったく同じことをするので、ここでは非常に非効率で不必要です。その後

、それは本当に/少なくとも `csv`すべてのモジュールではなく、テキスト処理を使用していないCSVないドメイン&改行

input_file = 'Book1.csv' 
chars = '$%^*"_\n' # etc notice the \n (linefeed) 
with open(input_file) as f: 
    lines = [x.strip(chars) for x in f] 
with open(input_file,"w") as f: 
    f.writelines("{}@bigfoot.com\n".format(x) for x in lines) 
+0

ありがとう!これらのソリューションはどちらも完璧に機能します! – tpcolson

関連する問題