我正在使用此代码将我的数据导出到文本文件中(pl是列表列表。嵌套列表具有相同的长度。文件中的列将由嵌套列表的元素组成):
with open("par.txt", "a+") as f:
f.write("id\ttrans_id\ttype\tstatus\tname\ttrans_type\ttrans_status\ttrans_name\n")
for lst in pl:
f.write(("{}\t"*16).format(lst[0].split()[1],lst[1].split()[1],lst[2].split()[1],lst[3].split()[1],lst[4].split()[1],lst[5].split()[1],lst[6].split()[1],lst[7].split()[1]))
但它给出了这个错误:
ValueError:格式为
的零长度字段名称
以下是我父母列表的一个小例子,但不是3,每个列表中有16个项目。如您所见,每个项目有2个单位,由制表符分隔。第一个单元是列名,第二个单元是对应的值。在文本文件中,每个嵌套列表都是一行(每对的第二个单元)
pl = [[' id "ENS001" ', ' name "EGSB" ', ' Trans "TTP" '], [' id "EN02" ', ' name "EHGT" ', ' Trans "GFT" ']]
答案 0 :(得分:0)
您必须使用旧版本的Python;即2.6或3.0。在这些版本中,您需要明确编号str.format
的格式字段:
f.write(("{0}\t"*16).format(
^
与索引一样,计数从0
开始。
但请注意,现代Python不再需要这样做。版本2.7和3.1或更高版本将自动为您格式化格式字段。有关更多信息,请参阅:
https://docs.python.org/3/whatsnew/3.1.html#other-language-changes
答案 1 :(得分:0)
我在这个问题中告诉过你,error in writing a text file in python;将其从 16 更改为 8 :
with open("par.txt", "a+") as f:
f.write("id\ttrans_id\ttype\tstatus\tname\ttrans_type\ttrans_status\ttrans_name\n")
for lst in pl:
f.write(("{}\t"*8).format(lst[0].split()[1],lst[1].split()[1],lst[2].split()[1],lst[3].split()[1],lst[4].split()[1],lst[5].split()[1],lst[6].split()[1],lst[7].split()[1]))
因为我们要将8个项目放入字符串中,因为您看到 format()中有8个项目。
实际上,无论重要的是哪个元素,我的意思是什么,即使这个元素中有100个元素,它也将通过 format()方法放置。
lst[0].split()[1]
例如,这个元素的长度并不重要,因为它在 format()函数中仍然是 元素,所以格式功能将放置此。