簡體   English   中英

Python二維列表:導出為定界文本文件

[英]Python two-dimensional list: exporting as delimited text file

我有一個二維列表myList [r] [c],其中每個c列都有r行。

我試圖將其導出到文本文件中,每個列元素都由管道分隔。 ,並在每行的末尾加上&符號。

myList = [[[] for a in range(c)] for b in range(r)]

{a bunch of code populating  myList}

f = open("myfile.txt","w")
for x in range(0,r):
    thisRow = ''
     for y in range(0,c):
          appendThis = myList[x][y]
          thisRow += appendThis + "|"
     f.write(thisRow)
     f.write("&")
f.close

...但是我收到TypeError: can only concatenate list (not "str") to list在添加管道字符的行上TypeError: can only concatenate list (not "str") to list

csv模塊就是為此而設計的。 Python 2.7示例:

import csv
r=7
c=5
myList = [[b*10+a for a in range(c)] for b in range(r)]

with open("myfile.txt","wb") as f:
    w = csv.writer(f,delimiter='|',lineterminator='&\r\n')
    w.writerows(myList)

輸出:

0|1|2|3|4&
10|11|12|13|14&
20|21|22|23|24&
30|31|32|33|34&
40|41|42|43|44&
50|51|52|53|54&
60|61|62|63|64&

Python對CSV有很好的支持。 以下是直接從示例改編而成:

import csv
with open('myfile.txt', 'wb') as csvfile:
    mywriter = csv.writer(csvfile, delimiter='|',lineterminator='&',
                            quotechar='"', quoting=csv.QUOTE_MINIMAL)
    mywriter.writerow(myList)

注意使用的lineterminator ,如果你想在每行有一個&末以及你可以使用一個新行“和\\ r \\ n”作為終結。

如果我將您的行和列弄混了,請注意,您可以執行以下操作

for line in myList:
    mywriter.writerow(line)

因此,這里有一個工作版本。 問題出在第一行,您有:

myList = [[[] for a in range(c)] for b in range(r)]

但這只是創建二維數組數組,我已將其替換為僅包含其元素索引的數組。 (並且現在它還在行尾添加了換行符。)

myList = [[a for a in range(c)] for b in range(r)]


f = open("myfile.txt","w")
for x in range(0,r):
    thisRow = ''
    for y in range(0,c):
      appendThis = myList[x][y]
      thisRow += str(appendThis) + "|"
    f.write(thisRow)
    f.write("&\n")
f.close

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM