【问题标题】:writing a line seperated by spaces to a csv file all elements in a different block将由空格分隔的行写入 csv 文件中的所有元素在不同的块中
【发布时间】:2011-11-21 15:56:21
【问题描述】:

我有一个元组,其中一个元素只是一个字符串,另一个是一个列表 ('x',['y','z']),我想将元组输出到一个包含所有同一行的不同元素,但不同的块。

这是我目前所拥有的

 outputwriter=csv.writer(open('output.csv','wb'), delimiter=' ')
 for tup in in_tup:
    print (tup[0]+' '.join('%s' %x for x in tup[1]))
    outputwriter.writerow(tup[0]+' ' +' '.join('%s' %x for x in tup[1]))

当我第一次打印元组时,输出是这样的

xxxx.com 164.44.xx.xx 164.44.xx.xx 164.44.xx.x

...

但是当我将它输出到 csv 时,我会在一个信号块“A1”中得到所有文本,依此类推。我在打开 csv 编写器时尝试了一个分隔符,但它不起作用。有什么想法

【问题讨论】:

  • 您可能希望分隔符为 ','。 Excel 用逗号分隔 csv 中的单元格内容。
  • 丹尼,这根本不是他的问题。实际上,csv 文档的分隔符是什么并不重要。经常使用制表符、管道、分号、冒号和句点。 python csv 模块可以很好地处理所有这些。
  • @Wilduck 他对块的解释令人困惑。听起来他在谈论一个 Excel 单元格,Excel 只支持 csv 的逗号。
  • 丹尼,好球。抱歉给你讲课,我只是假设问题出在输出上,而不是他用来打开输出的程序。
  • @Danny 是的,我的意思是 excel 中的单元格,很抱歉造成混乱

标签: python csv


【解决方案1】:
outputwriter = csv.writer(open('output.csv', 'w'), delimiter = ' ')
for tup in in_tup:
    inputList = [tup[0]]
    inputList.extend(tup[1])
    outputwriter.writerow(inputList)

【讨论】:

    【解决方案2】:

    这种行为是正确的:您只向每一行添加一个元素(这是一个通过连接所有元组创建的长字符串)。

    使用序列调用writerow() 以获得多个列。

    【讨论】:

      【解决方案3】:

      您不需要加入列表中的不同元素。您正在使用的 writerow 方法需要一个可迭代的(如列表或元组)并将每个元素放在它自己的列中,并由您指定的任何分隔符分隔。如果你真的想使用空格作为分隔符,下面的代码应该可以工作:

      outputwriter = csv.writer(open('output.csv', 'w'), delimiter = ' ')
      for tup in in_tup:
          outputwriter.writerow([tup[0], tup[1][0], tup[1][1]])
      

      但是,如果您要按照 Danny 的建议在 excel 中打开此文件,则需要将分隔符更改为逗号“,”。

      【讨论】:

      • 我明白你在做什么,但是元组的列表部分的长度会有所不同,有时它的大小可能是一百万或一百万,我如何绕过 [1][x] 中的硬编码
      • @GregBrown 检查我的答案,在 IP 列表的开头插入主机名 tup[0] tup[1]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      相关资源
      最近更新 更多