【问题标题】:csv.writer returning strange resultscsv.writer 返回奇怪的结果
【发布时间】:2015-01-23 09:11:03
【问题描述】:

我的代码如下所示:

import csv

mesta=["Ljubljana","Kranj","Skofja Loka","Trzin"]
opis=["ti","mene","ti mene","ne ti mene"]
delodajalci=["GENI","MOJEDELO","MOJADELNICA","HSE"]
ime=["domen","maja","andraz","sanja"]
datum=["2.1.2014","5.10.2014","11.12.2014","5.5.2014"]

with open('sth.csv','w',newline='') as csvfile:
    zapis = csv.writer(csvfile, delimiter=' ')
    dolzina=len(datum)
    i=0
    while i<dolzina:
        zapis.writerows([ime[i]+","+delodajalci[i]+","+opis[i]+","+datum[i]+","+mesta[i]])
        i+=1

由于某些奇怪的原因,我的结果看起来像: d o m e n G E N I t i 2 . 1. 2 0 1 4 L j u b l j a n a m a j a M O J E D E L O m e n e 5 。 1 0 . 2 0 1 4 K r 一个 n j a n d r a z M O J A D E L N I C A t i "" m e n e 1 1 。 1 2 . 2 0 1 4 S k o f j a " " L o k a s a n j a H S E n e""t i""m e n e 5。 5. 2 0 1 4 T r z i n

所以是一个 4 行 x 5 列的表。

我想获得有关如何使这些空白和“ ”消失的建议。因此,例如 d o m e n 将是 domen 和 S k o f j a " " L o k a,Skofja Loka。 我将永远感激你的帮助。哦,如果在没有任何其他模块的情况下可以做到这一点,那就更好了,因为我在这台计算机上安装它们也有问题:(

感谢您的宝贵时间。

【问题讨论】:

    标签: python csv


    【解决方案1】:
    import csv
    
    mesta=["Ljubljana","Kranj","Skofja Loka","Trzin"]
    opis=["ti","mene","ti mene","ne ti mene"]
    delodajalci=["GENI","MOJEDELO","MOJADELNICA","HSE"]
    ime=["domen","maja","andraz","sanja"]
    datum=["2.1.2014","5.10.2014","11.12.2014","5.5.2014"]
    
    with open('sth.csv','w') as csvfile:
        zapis = csv.writer(csvfile)
        zapis.writerows(zip(ime,delodajalci,opis,datum,mesta))
    

    创建输出:

    domen,GENI,ti,2.1.2014,卢布尔雅那

    maja,MOJEDELO,mene,5.10.2014,Kranj

    andraz,MOJADELNICA,ti mene,11.12.2014,Skofja Loka

    sanja,HSE,netimene,5.5.2014,Trzin

    在你所拥有的东西中, writerows 得到一个字符串(包括你想要的东西之间的逗号)。您希望它只打印该字符串。但是 csvwriter 想要打印一个在条目之间带有分隔符的列表。它只有一个字符串,所以当它把它当作一个列表时,每个字符都会被打印出来,然后是分隔符。

    在我所做的事情中,我让作家收到了一堆列表。每个列表都来自zip,因此每个列表都包含 zip 获得的参数的第 i 个条目。

    edit 删除了 dolzina 和 i=0,因为不再需要了。

    【讨论】:

    • 哦,也许您知道,是否存在任何 py 到 exe 转换器,因为我无法使用 py2exe 和 cmd 转换它。再次感谢您。
    • 我不知道创建.exe,但你可以看看stackoverflow.com/questions/10592913/…
    • 如果碰巧我希望每条数据都在它自己的单元格中,我必须添加什么?从现在开始,我得到以下输出:domen,GENI,ti,2.1.2014,Ljubljana maja,MOJEDELO,mene,5.10.2014,Kranj andraz,MOJADELNICA,ti mene,11.12.2014,Skofja Loka sanja,HSE,ne ti mene ,5.5.2014,Trzin 但是一行输出写在 1 个单元格中。所以基本上这种输出在我的excel文件中填充A1:A4,我想填充A1:D4。我可以做任何简单的改变吗​​?
    • 您必须对您所看到的内容进行更多解释。当我完全运行这段代码时,它会通过 E4 填充 A1
    猜你喜欢
    • 2012-08-08
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多