Python: Write a list of tuples to a file

前端 未结 6 1931
野性不改
野性不改 2020-12-13 10:11

How can I write the following list:

[(8, \'rfa\'), (8, \'acc-raid\'), (7, \'rapidbase\'), (7, \'rcts\'), (7, \'tve-announce\'), (5, \'mysql-im\'), (5, \'teln         


        
相关标签:
6条回答
  • 2020-12-13 10:22
    with open('daemons.txt', 'w') as fp:
        fp.write('\n'.join('%s %s' % x for x in mylist))
    

    If you want to use str.format(), replace 2nd line with:

        fp.write('\n'.join('{} {}'.format(x[0],x[1]) for x in mylist)
    
    0 讨论(0)
  • 2020-12-13 10:28
    import csv
    with open(<path-to-file>, "w") as the_file:
        csv.register_dialect("custom", delimiter=" ", skipinitialspace=True)
        writer = csv.writer(the_file, dialect="custom")
        for tup in tuples:
            writer.write(tup)
    

    The csv module is very powerful!

    0 讨论(0)
  • 2020-12-13 10:30
    open('filename', 'w').write('\n'.join('%s %s' % x for x in mylist))
    
    0 讨论(0)
  • 2020-12-13 10:37

    For flexibility, for example; if some items in your list contain 3 items, others contain 4 items and others contain 2 items you can do this.

    mylst = [(8, 'rfa'), (8, 'acc-raid','thrd-item'), (7, 'rapidbase','thrd-item','fourth-item'),(9, 'tryrt')]
    
    # this function converts the integers to strings with a space at the end
    def arrtostr(item):
        strr=''
        for b in item:
            strr+=str(b)+'   '
        return strr
    
    # now write to your file
    with open('list.txt','w+') as doc:
        for line in mylst:
            doc.write(arrtostr(line)+'\n')
        doc.close()
    

    And the output in list.txt

    8   rfa   
    8   acc-raid   thrd-item   
    7   rapidbase   thrd-item   fourth-item   
    9   tryrt  
    
    0 讨论(0)
  • 2020-12-13 10:38

    simply convert the tuple to string with str()

    f=open("filename.txt","w+")
    # in between code
    f.write(str(tuple)+'/n')
    # continue
    
    0 讨论(0)
  • 2020-12-13 10:39

    Here is the third way that I came up with:

    for number, letter in myList:
        of.write("\n".join(["%s %s" % (number, letter)]) + "\n")
    
    0 讨论(0)
提交回复
热议问题