【问题标题】:How to extract informations of a list of tuples and how to write more than one information per line?如何提取元组列表的信息以及如何每行写入多个信息?
【发布时间】:2018-12-19 13:56:37
【问题描述】:

我想知道如何解决这个问题...我的输入是:[(18.41870765673129, 9.511001141278493), (17.013801776758395, 14.63476877634968)],我想用元组的信息写一个这样的文件:

18.41870765673129, 9.511001141278493
17.013801776758395, 14.63476877634968

我希望每行有两个信息。 我的脚本:

def write(filename, l):
    with open(filename,"w") as file:
         for i in range(len(l)):
             for j in l[i]:
                 s = str(j)
                 file.write(s)

但我的脚本不起作用,因为输出是:

18.418707656731299.51100114127849317.01380177675839514.63476877634968

谢谢!!!

【问题讨论】:

    标签: python list file tuples


    【解决方案1】:

    试试这个:

    def write(filename, l):
        with open(filename,"w") as file:
             for i,j in l:
                 file.write('{}, {}\n'.format(i, j))
    

    如果您使用的是Python3.6或更高版本,您可以将write这一行更改为:

    file.write(f'{i}, {j}\n')
    

    【讨论】:

    • 没问题,如果你觉得我的回答有帮助,请查看旁边的灰色按钮。
    • 我只是建议 OP 避免为函数使用“写入”名称,因为文件对象本身具有“写入”方法,并且相似性可能会令人困惑。试试save 或其他东西。公开调用中的wtencoding='utf-8' 也有助于提高可读性并防止在不同平台上进行不同的文件处理。
    【解决方案2】:

    试试

    def write(filename, l):
        with open(filename, "w") as file:
             for t in l:
                 file.write(', '.join([str(s) for s in t]))
                 file.write('\n')
    

    注意:获取列表的长度不是必须的:

    for i in range(len(l)):
    

    只需获取 l 内的所有元组

    for t in l:
    

    下面的命令获取元组的所有部分并将它们转换为字符串。然后将字符串连接起来。

    ', '.join([str(s) for s in t])
    

    【讨论】:

    • 你不需要换行符吗?
    • 是的,需要添加
    • 谢谢,但我想要这样的文件:
    • map(str, t) 而不是[str(s) for s in t] 会更好
    【解决方案3】:

    试试这个...

    for i in range(len(l)):
        for j in range(len(l[i])):
            if j < len(l[i]) - 1:
                s = s + str(l[i][j]) +", "
            else:
                s = s + str(l[i][j]) +"\n"
            file.write(s)
    

    【讨论】:

      猜你喜欢
      • 2019-08-31
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多