【问题标题】:Unwanted blank lines between lists列表之间不需要的空行
【发布时间】:2016-05-06 08:20:21
【问题描述】:

我在处理一些测试代码时遇到了一些问题。此代码旨在:

  • 读取 csv 文件
  • 接受两个输入
  • 将输入放在一个列表中
  • 用 csv 内容 + 输入列表创建一个新列表
  • 用新列表覆盖 csv。

    import csv
    
    input1 = input("input 1")
    input2 = input("input 2")
    
    original = []
    with open('test.csv', 'r') as f:
       reader = csv.reader(f)
       original = list(reader)
    
    data = [input1,input2]
    original.append(data)
    
    with open('test.csv', 'w') as f:
       writer = csv.writer(f)
       writer.writerows(original)
    

例如,如果文件中包含“cats”和“dogs”,并且我输入了“zebras”和“giraffes”,那么当我在记事本中打开 csv 文件时,我希望它看起来像这样: link

但是,当我多次运行代码时,列表之间会产生空白行,我不知道为什么。 link

我是 Python 新手,感谢任何帮助。

【问题讨论】:

  • 你能尝试 rstrip 你的输入吗?例如,data = [input1.rstrip(), input2.rstrip()]
  • @user1157751 没有改变

标签: python list csv


【解决方案1】:

解决办法是:

open('test.csv', 'w', newline='')

在 Python 的新版本中,csv.Writer 现在可以处理换行符,但open 也可以。然后你必须告诉open它在写入文件时不能添加换行符。更多解释请见API documentation

【讨论】:

  • 谢谢,我还以为会是这么简单。
  • @Gabriel Owens,不客气,如果是解决方案,你可以接受它
  • 您使用的是什么版本的 Python?当我尝试这个时,我得到了TypeError: 'newline' is an invalid keyword argument for this function