[英]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.