代码之家  ›  专栏  ›  技术社区  ›  Rose

python:如何将python脚本的输出写入一个由tab分隔的同一行文件

  •  0
  • Rose  · 技术社区  · 5 年前

    我是python(2.7.15)的新手。我正试图将python脚本的输出附加到一个由一个选项卡分隔的文本文件中。

    以下是我的代码:

    for key,value in d.iteritems():
        with open('output.txt', 'a') as file:
            file.write(key + "\t" + value + "\t")
    .....
    ....
     for item in data["response"]["docs"]:
            titleValue = (item['title'])
     with open('/tmp/output.txt', 'a') as file:
            file.write(titleValue + "\n")
    

    我的输出文件如下所示:

    FirstKey    FirstValue
        FirstTitle
    SecondKey    SecondValue
        SecondTitle
    

    基本上,我想在同一行中以制表符分隔的值打印值,在新行中以制表符分隔的值打印下一行,如下所示:

    FirstKey    FirstValue    FirstTitle
    SecondKey   SecondValue   SecondTitle
    

    我该怎么做?file.write正在以新行打印它。我想把它印在同一行

    0 回复  |  直到 5 年前
        1
  •  1
  •   Dmitri Ovodok    5 年前

    首先应该指出的是 file.write() 不隐式添加任何换行符,并且您获得的换行符以某种方式在提供给该函数的参数中传递。

    不幸的是,从示例中不清楚如何获得写入的键和值。但是请注意,标题行(例如 FirstTitle )在标题前包含缩进,可能是制表符。因此,我认为 d 字典是一些以换行符结尾的字符串。

    往那边走 key + "\t" + value + "\t" (写入文件)会导致 "FirstKey\tFirstValue\n\t" 这解释了你得到的输出。为了获得预期的结果,请确保这些值不包含尾随的换行符,例如,通过调用 str.rstrip 对他们来说:

    value = value.rstrip()

        2
  •  1
  •   Happy Boy    5 年前

    更像是蟒蛇 % 我是说, format join + 是的。

    首先, 参加 运行得更快,特别是当文本数量很大,并且代码更清晰时。具体如下:

    words = ["Thanks", "for", "contributing", "an", "answer", "to", "Stack", "Overflow!"]
    text = "\t".join(words)
    

    其次, 格式 可以根据需要设置文本格式。具体如下:

    text1 = "{}\t{}\t{}\t".format(1, 'A', 1.343)  # output: 1   A   1.343
    text2 = "%04d\t%5f" % (1, 3.1415926)   # output: 0001   3.141593