Python二维列表:导出为分隔文本文件

时间:2016-12-31 04:02:16

标签: python multidimensional-array

我有一个二维列表myList [r] [c],每个r列有c行。

我正在尝试将其导出到文本文件中,每个列元素都由管道分隔和&符号&在每一行的末尾。

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

3 个答案:

答案 0 :(得分:2)

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&

答案 1 :(得分:2)

Python非常支持CSV。以下内容直接来自example

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&#39 ;作为终结者。

如果我的行和列混合了,请注意您可以执行类似

的操作
for line in myList:
    mywriter.writerow(line)

答案 2 :(得分:2)

所以这里有一个工作版本。 问题出在第一行,你有:

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