Python-修改csv文件

时间:2017-11-07 06:31:58

标签: python csv

现在我知道修改csv文件通常是不可行的,因为你需要创建一个新的csv文件并写入它。我遇到的问题是保留数据的原始顺序。

输入csv文件如下所示:

C1       C2         C3
apple    BANANA     Mango
pear     PineApple  StRaWbeRRy

我想将所有数据转换为小写,并输出一个新的csv文件,如下所示:

C1       C2         C3
apple    banana     mango
pear     pineapple  strawberry

到目前为止,我可以遍历输入csv文件并将所有值转换为小写但我不知道如何将其重写为该格式的csv文件。我的代码是:

def clean (input)
  aList = []
  file = open(input, "r")
  reader = csv.reader(file, delimiter = ',')
  next(reader, None) # Skip the header but I want to preserve it in the output csv file
  for row in reader:
     for col in row:
        aList.append(col.lower())

所以现在我有一个包含所有小写数据的列表,如何将其重写为与输入相同格式(相同行数和列数)的csv文件,包括我在代码中跳过的标题行

4 个答案:

答案 0 :(得分:2)

如果您只想改变数据的大小并保留其他所有内容,那么最好跳过csv模块并使用 直文如:

# Open both files
with open("infile.csv") as f_in, open("outfile.csv", 'w') as f_out:
    # Write header unchanged
    header = f_in.readline()
    f_out.write(header)

    # Transform the rest of the lines
    for line in f_in:
        f_out.write(line.lower())

答案 1 :(得分:1)

熊猫方式:

使用pandas读取文件并获取数据帧。然后,您只需使用lower()

即可
import pandas as pd

def conversion(text):
    return text.lower()


df = pd.read_csv(file_path)
df[column_name] = df[column_name].map(conversion)

然后您可以使用to_csv功能

保存它

答案 2 :(得分:0)

如果您想使用csv模块,请使用以下代码段。

import os
import csv


def clean(input):
    tmpFile = "tmp.csv"
    with open(input, "r") as file, open(tmpFile, "w") as outFile:
        reader = csv.reader(file, delimiter=',')
        writer = csv.writer(outFile, delimiter=',')
        header = next(reader)
        writer.writerow(header)
        for row in reader:
            colValues = []
            for col in row:
                colValues.append(col.lower())
            writer.writerow(colValues)
    os.rename(tmpFile, input)

答案 3 :(得分:0)

我找到的最简单的方法如下 让初始CSV文件名为test.csv

with open('test.csv','r') as f:
    with open('cleaned.csv','w') as ff:
        ff.write(f.readline())
        ff.write(f.read().lower())

上面的代码将创建一个包含所有小写

的新csv