【问题标题】:Python: How to write the output of python script to a file in the same line separated by tabPython:如何将python脚本的输出写入由制表符分隔的同一行中的文件
【发布时间】:2019-02-22 22:16:21
【问题描述】:

我是 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 正在新行中打印它。我希望它在同一行打印

【问题讨论】:

  • 没有时间(或 Python 2)来测试完整的答案,抱歉。但是,我认为您需要在单个 with open... 中执行此操作。此外,研究for 循环以了解如何同时迭代多个控件。
  • 问题是我不能一次打开文件写入。我必须从两个不同的循环中获取输出,然后分别编写。
  • 仔细观察,我看不出您展示的代码如何产生您展示的输出。我认为“SecondKey SecondValue”会出现在“FirstTitle”之前。

标签: python python-2.7 file


【解决方案1】:

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

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

这样key + "\t" + value + "\t"(写入文件)会产生类似"FirstKey\tFirstValue\n\t"的东西,它解释了你得到的输出。为了获得预期的结果,请确保这些值不包含尾随换行符,例如,为它们调用 str.rstrip

value = value.rstrip()

【讨论】:

    【解决方案2】:

    使用%formatjoin 比使用+ 更符合pythonic。

    首先,join 运行速度更快,特别是在文本数量很大的情况下,并且您的代码更清晰。如下:

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

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

    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
    

    【讨论】:

    • 谢谢。这很有帮助
    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多