python从一对列表创建以制表符分隔的文本文件
我有三张单子python从一对列表创建以制表符分隔的文本文件,python,linux,list,Python,Linux,List,我有三张单子 list1 = ["apple","red","1","fresh"] list2 = ["mango","red","5","old"] list3 = ["kiwi","green","3","fresh"] 现在我想创建一个以制表符分隔的文本文件 FRUIT COLOR QUANTITY STATE apple red 1 fresh mango red 5 old kiwi green 3
list1 = ["apple","red","1","fresh"]
list2 = ["mango","red","5","old"]
list3 = ["kiwi","green","3","fresh"]
现在我想创建一个以制表符分隔的文本文件
FRUIT COLOR QUANTITY STATE
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh
我正在使用这段代码,但是它没有以正确的格式输出
with open ('processed_seq.txt','a') as proc_seqf:
for a,b,c in zip(list1,list2,list3):
proc_seqf.write("{}\t{}".format(a,b,c))
[kshk:~/server] % cat processed_seq.txt
apple mangored red1 5fresh old%
有什么建议吗
更新:
我正在测试清单上其他人回答的解决方案
list1 = ['JANET>WAS-TEB-01-INT', 'XXX-TR', 'XXX-TR(HTTPS)', 'XXX3>ASAbox', 'Allow charliega', 'ASAS>ASAbox', 'ASAS>ASAbox80', 'ASAS>ASAbox443', 'JilesGHS>ASAbox', 'XXX2>ASAbox', 'Allow XXX', 'JMP>GHS_ALL_NETWORKS', 'GHS_ALL_NETWORKS>JMP', 'ALL_NETWORKS>DNS', 'DNS>ALL_NETWORKS', 'JMP>AMBARI', 'JMP>DSA_TEB', 'JMP>JENKINS_TEB', 'JMP>GIT_TEB', 'JMP>RANGER_TEB', 'ALL>ZABBIX_SERV', 'ZABBIX_SERV>ALL', 'ASAbox>JANET', 'JMP>JANET2', 'DNS>EXTERNAL_DNS', 'ALL_NETWORKS>GUM', 'ALL_NETWORKS>DSA_DOG_7389', 'ALL_NETWORKS>DSA_KERB_TCP_464', 'ALL_NETWORKS>DSA_KERB_TCP_88', 'ALL_NETWORKS>DSA_KERB_UDP_464', 'ALL_NETWORKS>DSA_KERB_UDP_88', 'ALL_NETWORKS>DSA_LDAP_1', 'ALL_NETWORKS>DSA_LDAP_2', 'ALL_NETWORKS>DSA_NTP', 'BDA>BD', 'BDA>BD_UDP', 'BD>PIN-SQP-01', 'ING>-WAS-FTP-01', 'ING>BD_8080', 'WAS-TEB-01>PAP-RSV-02', 'JENKINS>JMP', 'CI>PROXY', 'ING>BD', 'BDN>DSA01', 'ALLOW XXX', 'GUM>PROXY', 'CI>ALL-SERVERS-GHS', 'deny rest']
list2 = ['None', '123.236.68.195/32', '123.236.68.195/32', '62.17.217.104/32', '10.132.8.23/32', '132.43.147.188/32', '132.43.147.188/32', '132.43.147.188/32', '100.184.251.148/32', '100.136.247.11/32', '62.18.120.237/32', '20.20.6.5/32', '20.20.0.0/16', '20.20.0.0/16', '20.20.1.58/32', '20.20.6.5/32', '20.20.6.5/32', '20.20.6.5/32', '20.20.6.5/32', '20.20.6.5/32', '20.20.0.0/16', '20.20.1.50/32', '123.122.0.149/32', '20.20.6.5/32', '20.20.1.58/32', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.0.0/16', '20.20.2.0/24', '20.20.2.0/24', '20.20.3.0/24', '20.20.4.0/24', '20.20.4.0/24', '20.20.6.3/32', '20.20.1.38/32', '20.20.1.38/32', '20.20.4.0/24', '20.20.3.0/24', '188.29.165.228/32', '20.20.1.33/32', '20.20.1.38/32', 'None']
list3 = ['123.122.0.154/32', '123.122.0.149/32', '123.122.0.149/32', '123.122.0.149/32', 'None', '123.122.0.149/32', '123.122.0.149/32', '123.122.0.149/32', '123.122.0.149/32', '123.122.0.149/32', 'None', '20.20.0.0/16', '20.20.6.5/32', '20.20.1.58/32', '20.20.0.0/16', '20.20.3.7/32', '20.20.1.44/32', '20.20.1.38/32', '20.20.1.38/32', '20.20.3.7/32', '20.20.1.50/32', '20.20.0.0/16', 'None', 'None', '20.20.6.5/32', '20.20.1.33/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.1.44/32', '20.20.3.0/24', '20.20.3.0/24', '20.20.4.3/32', '20.20.6.7/32', '20.20.3.7/32', '20.20.2.28/32', '20.20.6.5/32', '20.20.6.5/32', '20.20.3.0/24', '20.20.1.44/32', 'None', '20.20.6.5/32', '20.20.0.0/16', 'None']
list4 = ['None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', '22', 'None', '53', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None', 'None']
list5 = ['443', '22', '443', 'None', 'None', '22', '80', '443', '22', 'None', 'None', '22', 'None', '53', 'None', '8080', '443', '8081', '80', '6080', '10051', '10050', 'None', 'None', '53', '80', '7389', '464', '88', '464', '88', '389', '636', '123', 'None', '1024:65535', '22', '22', '8080', '443', '22', '3128', 'None', '443', 'None', '3128', '22', 'None']
list6 = ['allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'allow', 'deny']
由于您不想将列写入文件,因此不需要
zip
,也省略了一些项
要更正可用于指定每个项目后面的空白数量的格式,请执行以下操作:
>>> for a,b,c,d in (list1,list2,list3):
... print("{:<10} {:<10} {:<10} {:<10}".format(a,b,c,d))
...
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh
>对于(列表1、列表2、列表3)中的a、b、c、d:
... 使用模块打印(“{::
输出:
FRUIT COLOR QUANTITY STATE
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh
“它的输出格式不正确"-那么它做什么呢?首先,你有三个参数来设置格式,但只有两个占位符。。谢谢,这是可行的,但是我如何能够自动适应列表的长度,即列表上只有4个项目,如果列表中有100个项目呢?@Kristigitx如果可行,你可以通过答:我的原始列表中的项目数大约为20,我是否需要添加其中的20个“{:@kridigitx否您可以通过在循环前乘以:来创建格式字符串>>s=”{:请参阅上面的新列表,使用s.format的输出不是PrettyTool,这是一个很好的建议,但是输出并不漂亮,尤其是最后一行…您到底想要什么样的输出?您最初的问题是使用制表符分隔的输出,而不是固定宽度的格式。这是制表符分隔的输出。在这种情况下,csv模块不适合您。但我想向你们指出这个讨论,仅供参考:干杯。
>>> for a in (list1,list2,list3):
... print("{:<10} {:<10} {:<10} {:<10}".format(*a))
...
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh
>>> s="{:<10}"*4
>>> for a in (list1,list2,list3):
... print("s.format(*a))
...
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh
import csv
csv.register_dialect('fruit', delimiter='\t', quoting=csv.QUOTE_NONE, lineterminator='\n')
with open('processed_seq.txt', 'a') as csvfile:
fieldnames = ['FRUIT', 'COLOR', 'QUANTITY', 'STATE']
list1 = ["apple","red","1","fresh"]
list2 = ["mango","red","5","old"]
list3 = ["kiwi","green","3","fresh"]
alllists = [fieldnames, list1, list2, list3]
writer = csv.writer(csvfile, dialect='fruit')
writer.writerows(alllists)
FRUIT COLOR QUANTITY STATE
apple red 1 fresh
mango red 5 old
kiwi green 3 fresh