从CSV文件读取并打印到文本文件

时间:2017-05-26 23:14:48

标签: python csv text newline

我是编码新手,并尝试自己解决这个问题,但无济于事! 我从csv文件中输入行并将它们写入文本文件。行有很多数据,但我只想要某些字段。我刚刚写了我想要的字段,即参考编号12345,日期:20/5/17,事件类型:文字......

问题是所有行都聚集在一起,它们之间没有任何行。理想情况下,我想要两三行,即

  1. 参考编号12345,日期:20/5/17,事件类型:文字......

  2. 参考编号23117,日期:22/5/17,事件类型:文字......

  3. 参考编号23117,日期:22/5/17,事件类型:文字......

  4. 最终,我希望能够只编写包含特定关键字的行,即按事件类型或特定日期。如果我能在行之间获得换行符,那么我会很高兴,因此它很容易阅读。 我几乎尝试过所有事情。 " \ n"似乎只是在文本文件中打印而不是创建一个新行。

    这是我使用的代码,它可能有点粗糙,但我通过反复试验得到了这一点。

    import csv
    import os
    
    with open("raw.csv", "r") as f:
        r = csv.reader(f)
        for row in r:
            r = [row for row in r]
            r = [row[4] + "---" + row[1] + "---" + row[6] for row in r]
    
    with open("txtfile.txt", "w") as output:
        output.write(str(r)+"\r\n")
        print("Written successfully")
    

1 个答案:

答案 0 :(得分:1)

您必须在每行之后打印一个新行,而不是在整个字符串之后。从:

开始
with open("raw.csv", "r") as f, open("txtfile.txt", "w") as output:
    r = csv.reader(f)
    for row in r:
        output.write("{} --- {} --- {}\n".format(row[4], row[1], row[6]))

从那里拿走它。有关文本文件的其他格式,请查看str.format()

此外,您可能希望为您的平台使用“正确”的行分隔符(如上所述,对于所有正常情况,大致意味着\n,如果您打算阅读文本,则为\r\n for Windows)应用程序中的文件不是本世纪设计的。您可以从os模块中获取当前平台的首选分隔符:os.linesep