当前位置: 首页 > 面试题库 >

如何在CSV文件中添加新列?

松成和
2023-03-14
问题内容

我有几个CSV文件,如下所示:

Input
Name        Code
blackberry  1
wineberry   2
rasberry    1
blueberry   1
mulberry    2

我想在所有CSV文件中添加一个新列,使其看起来像这样:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry

到目前为止,我的脚本是:

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])

(Python 3.2)

但是在输出中,脚本跳过了每一行,新列中仅包含Berry:

Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry

问题答案:

这应该使您知道该怎么做:

>>> v = open('C:/test/test.csv')
>>> r = csv.reader(v)
>>> row0 = r.next()
>>> row0.append('berry')
>>> print row0
['Name', 'Code', 'berry']
>>> for item in r:
...     item.append(item[0])
...     print item
...     
['blackberry', '1', 'blackberry']
['wineberry', '2', 'wineberry']
['rasberry', '1', 'rasberry']
['blueberry', '1', 'blueberry']
['mulberry', '2', 'mulberry']
>>>

编辑,注意在py3k中必须使用 next(r)

感谢您接受答案。在这里,您有一个好处(您的工作脚本):

import csv

with open('C:/test/test.csv','r') as csvinput:
    with open('C:/test/output.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []
        row = next(reader)
        row.append('Berry')
        all.append(row)

        for row in reader:
            row.append(row[0])
            all.append(row)

        writer.writerows(all)

请注意

  1. 中的lineterminator参数csv.writer。默认情况下,它设置为'\r\n',这就是为什么间距为两倍的原因。
  2. 使用列表附加所有的行并用writerows。如果文件很大,这可能不是一个好主意(RAM),但是对于普通文件,我认为它会更快,因为I / O较少。
  3. 如本文评论中所述,请注意with,您可以在同一行中执行以下操作,而不是嵌套两个语句:

使用open(’C:/test/test.csv’,’r’)作为csvinput,open(’C:/test/output.csv’,’w’)作为csvoutput:



 类似资料:
  • 我有几个CSV文件如下所示: 我想添加一个新的列到所有的CSV文件,使它看起来像这样: 到目前为止,我的剧本是: (Python 3.2) 但在输出中,脚本跳过每一行,新列中只有Berry:

  • 问题内容: 我有一个CSV文件,例如 我想加上引号使它像: 最快的方法是什么?我将在cronjob中实现它。 问题答案: 使用sed:

  • 我有一个链接到一个包含不同值的在线XML文件。我已经编写了一段代码,允许我检索这个文件中两个特定标记的内容,并将它们放入一个csv文件中。 第一个标记是: 第二个是带有以下内容的url: 我的问题是,在输出csv文件中,我确实得到了URL,但它们是放在列中的,而id没有放在我的csv文件中: 我怎样才能让输出文件像这样呢?

  • 我在文件。我正在使用要成为电子邮件模板和电子邮件,我需要添加图像,但我不能。我是新加入节点的。js和Stack Overflow,我在下面放了一些关于我的代码的信息。 app.useexpress.static(path.join__dirname)

  • 问题内容: 我正在尝试使用mpdf将html转换为pdf。问题是我无法将CSS应用于pdf文件。 这是我的php代码: 它在做什么是在我的此php页面上通过ajax提取html。但是它给出的输出并不带有我为此编写的css。 请告诉我现在要做吗? 问题答案: 首先分配您的html,然后包含 mpdf.php 文件。

  • 问题内容: 假设您有一个文件 并希望添加一些标头信息,例如 如何添加此“标题”?手动执行似乎很简单。点击几回车,复制/粘贴或写信息,就可以了。当然,在R中,我可以读入,创建,添加标题信息,然后。 我想知道是否还有另一种从“顶部”附加文件的方法。也欢迎使用其他解决方案(来自c ++或Java …)(我很好奇其他语言如何解决此问题)。 问题答案: 在R中,不需要使用额外的文件。您可以这样做: 但是,使