首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CSV重写csv文件

使用CSV重写csv文件
EN

Stack Overflow用户
提问于 2015-11-04 19:41:34
回答 1查看 144关注 0票数 0

我以CSV文件的形式打开,将内容转换为numpy数组,然后操作数组。现在我如何将它写入一个新的CSV文件'newtable.csv'?

代码语言:javascript
复制
file_name = "table.csv" 

import numpy as np

reader=csv.reader(open("table.csv","rb"),delimiter=',')
x=list(reader)
result=np.array(x).astype('str') # convert to numpy array

我不知怎么应该用

代码语言:javascript
复制
writer = csv.writer(open('newtable.csv', 'wb'), delimiter=',')

但是,我没有更改CSV文件的总体结构;我仍然使用相同大小的列和行。(我只改了几个号码)我要重写整件事吗?

编辑:在numpy数组的情况下,我将如何重写整个过程?np.savetxt("foo.csv", result, delimiter=",")的问题在于它不是正确的格式。您必须以某种方式使用格式说明符。

EDIT2:我应该以某种方式使用writerow(),但我不确定最好的方法是什么。我有一个numpy数组形状( 700 , 12 ),因此这是由700行条目组成的12个“列”,并且"title“已经存在。

代码语言:javascript
复制
with open("new_file.csv", "w") as toWrite:
    writer = csv.writer(toWrite, delimiter=",")
    writer.writerow([.....])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 19:49:58

是的,除非您只是附加到现有文件的末尾,否则您必须重写整个文件,以便对内容进行任何更改。

在EDIT2:之后的响应

要将2D numpy数组写入CSV文件,可以执行以下操作。

假设您操作的2D数组现在称为result_edited

代码语言:javascript
复制
with open('new_file.csv', 'wb') as toWrite:
    writer = csv.writer(toWrite) # if the delimiter is ',', you don't need to specify

    for row in result_edited:
        writer.writerow(row)

你大部分时间都在那里!

或者,当您操作时,如果每一行都是相互独立的,则可以逐行读写。见下文。

代码语言:javascript
复制
file_name_in = 'numeric_table.csv'
file_name_out = 'new_file.csv'

with open(file_name_in, 'rb') as f_in:
    reader = csv.reader(f_in)

    with open(file_name_out, 'wb') as f_out:
        writer = csv.writer(f_out)

        for row in reader:

            # manipulate row, change numbers, etc.

            writer.writerow(row) # Write row to new file
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33530608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档