【问题标题】:Python: How to print an element from a string on a new line [duplicate]Python:如何在新行上打印字符串中的元素[重复]
【发布时间】:2021-09-29 02:07:11
【问题描述】:

我在文本文件中有一长串值

[(3.7811269080692846, 0, 1), (3.7811269080692846, 1, 0), (3.7698643400208622, 1, 2), (3.7698643400208622, 2, 1)]

我希望以这样的格式将每个括号打印在单独的行上

[(3.7811269080692846, 0, 1), 
(3.7811269080692846, 1, 0), 
(3.7698643400208622, 1, 2), 
(3.7698643400208622, 2, 1)]

这是我将其打印到文件的方式

f = open('contact.txt', 'w')

f.write(str(z))

f.close()

以我想要的格式打印文件的简单方法是什么?

【问题讨论】:

  • 您一定在这里尝试过吗?发生了什么?
  • replace( "), ", "),\n" ) ... 用正确插入的换行符替换每个元素结尾序列。
  • @Prune 但它不是字符串,而是列表
  • 哦,我很困惑。您实际上想要 write 到该文件。我以为他们是两种不同的情况。 replace() 方法容易出现各种错误,我想知道你为什么要这样写;您是否希望存储一个稍后重新制作的对象?

标签: python


【解决方案1】:

这是一个超级懒惰的方法:

obj = [(3.7811269080692846, 0, 1),
       (3.7811269080692846, 1, 0),
       (3.7698643400208622, 1, 2),
       (3.7698643400208622, 2, 1)]

with open(r"C:\Temp\test.txt", 'w') as f:
    f.write("[\r\n")
    for tup in obj:
        f.write(f"\t{tup!r},\r\n")
    f.write("]\r\n")

这将使用制表符缩进所有元组,并确保所有内容都有自己的行。

【讨论】:

    【解决方案2】:

    这是一种方法:

    text = [(3.7811269080692846, 0, 1),
            (3.7811269080692846, 1, 0),
            (3.7698643400208622, 1, 2),
            (3.7698643400208622, 2, 1)]
    
    with open('contact.txt', 'w') as f:
        for line in text:
            f.write("{}\n".format(str(line)))
    

    【讨论】:

      【解决方案3】:

      你可以试试 pprint(漂亮的打印)。

      from pprint import pprint.
      
      array=[some values]
      
      pprint(array)
      

      【讨论】:

        猜你喜欢
        • 2012-10-04
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        • 2016-07-30
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多