修改csv文件?

时间:2015-03-27 13:47:59

标签: python csv

是否可以使用Python修改位于在同一文件夹 /目录中的所有csv文件(总共240个)? csv文件包含测试结果,这些文件列在第一列而不是几列中。通过修改,我想用下面的示例B替换所有csv文件的分号(;)的逗号(,):

A)一个csv文件的内容示例(通过Python脚本修改之前):

Column A:              Column B:   Column C:   Column D:   Column E:
1, 65, 165, 484, 15,
0, 46, 49, 4, 66,

B)一个csv文件的内容示例(通过Python脚本修改后):

Column A:   Column B:   Column C:   Column D:   Column E:
1           65          165         484         15
0           46          49          4           66

我还没有找到任何例子。你有没有实现过类似的东西?或者是否有比Python更好的解决方案?我知道你可以在Excel中完成它,但我不想重复240次。

更新:我的解决方案

我使用以下代码完成它并且它有效。但是在每一行之间我都有一个空行。我不明白为什么??

with open('_' + csv_name, mode="w") as outfile:
    writer = csv.writer(outfile, delimiter=';')
    with open(csv_name, mode="rU") as infile:
        print(csv_name)
        reader = csv.reader(infile, dialect="excel")
        for row in reader:
            print(row)
            writer.writerow(row)

修改与* .py文件位于同一文件夹中的每个csv文件。

2 个答案:

答案 0 :(得分:4)

首先,您需要找到目录中所有CSV文件的文件:

import os
for file in os.listdir("/mydir"):
    if file.endswith(".txt"):
        #here is where we will process each file

现在要处理打开它所需的每个文件:

csv_file = open(file, mode="r")

现在我们可以读入数据:

data = file.readlines()

再次关闭文件:

csv_file.close()

假设您要在适当的位置编辑它们(没有文件名更改) 在写入模式下重新打开同一个文件:

csv_file.open(file, mode="w")

现在我们处理数据:

for line in data:
    file.write(line.replace(",",";"))

现在我们再次关闭文件:

csv_file.close()

并且因为这里面都是'for file in ...'循环,所以对于目录中以'.csv'结尾的每个文件都会重复这个。

答案 1 :(得分:0)

使用sed的简单解决方案

sed -i 's/,/;/g' *.csv