我有一个二维列表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
。
答案 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