5

複数の csv ファイルを編集する必要があります。実際、ほとんどのファイルはそのままで問題ありません。変更が必要なのは最後の (41 番目の) 列だけです。その列に特定の文字列が出現するたびに、それを別の文字列に置き換える必要があります。具体的には、「SD」をすべて「S」に置き換える必要があります。Pythonを使用してこれを達成しようとしましたが、csvファイルを作成する必要があると思いますが、これを行う方法がよくわかりません:

import os 
import csv


path=os.getcwd()

filenames = os.listdir(path)

for filename in filenames:

    if filename.endswith('.csv'):
        r=csv.reader(open(filename))

        for row in r:
            if row[40] == "S-D":
                row[40] = "S"

何か助けはありますか?また、シェル スクリプトを使用してこれを行うための迅速でエレガントな方法を誰かが持っている場合、それはおそらく私にとっても非常に役立つでしょう。

4

2 に答える 2

4

これらの線に沿って何かを試してください。glob@SaulloCastroとモジュールで言及されているように、モジュールを使用していcsvます。

import glob
import csv

for item in glob.glob(".csv"):
    r = list(csv.reader(open(item, "r")))
    for row in r:
        row[-1] = row[-1].replace("S-D", "S")
    w = csv.writer(open(item, "w"))
    w.writerows(r)
于 2013-10-02T20:12:32.880 に答える
3

CSV ファイルの読み取りと書き込みに関する Python ドキュメントをよく読んでください。そこで学ぶことはたくさんあります。これがあなたの質問に基づく基本的な例です。最後の列のデータのみを変更し、名前に「_edited」を含む変更済みファイルを書き出します。

import os 
import csv


path=os.getcwd()

filenames = os.listdir(path)

for filename in filenames:

    if filename.endswith('.csv'):
        r=csv.reader(open(filename))
        new_data = []
        for row in r:
            row[-1] = row[-1].replace("S-D", "S")
            new_data.append(row)

        newfilename = "".join(filename.split(".csv")) + "_edited.csv"
        with open(newfilename, "w") as f:
            writer = csv.writer(f)
            writer.writerows(new_data)
于 2013-10-02T20:25:11.067 に答える