处理从csv获取值的内容并将它们在句子中写入新的csv:
import csv
with open('Links.csv', 'rb') as input_file, \
open('Link Statements.csv', 'w') as output_file:
reader = csv.reader(input_file, delimiter=',', quoting=csv.QUOTE_NONE)
for row in reader:
link_name, from_unit, to_unit, rate, type = row
output_file.write(" %s," % (from_unit))
output_file.write("Establish %s link %s at %s Kbps to %s.\n" % (type, link_name, rate, to_unit))
output_file.write(" %s," % (to_unit))
output_file.write("Terminate %s link %s at %s Kbps from %s.\n" % (type, link_name, rate, from_unit))
这需要以下内容:
MPP01,RCT-6,1/6,14336,LOS UHF MCR
SIPRPP01,RCT-6,1/6,8192,SIPRNET
NIPRPP02,RCT-6,2/6,4096,NIPRNET
BSPEPP03,RCT-6,1/10,472,BSPE
DPV0PP04,1/10,2/6,472,DPV0
SIPRPP04,1/6,1/3,8192,SIPRNET
NIPRPP03,1/6,1/10,8192,NIPRNET
SIPRPP03,3/6,1/10,4096,NIPRNET
NIPRZP01,MEB,RCT-6,8192,NIPRNET
SIPRZP01,MEB,RCT-6,4096,SIPRNET
并将其写入新文件:
RCT-6,Establish LOS UHF MCR link MPP01 at 14336 Kbps to 1/6.
1/6,Terminate LOS UHF MCR link MPP01 at 14336 Kbps from RCT-6.
RCT-6,Establish SIPRNET link SIPRPP01 at 8192 Kbps to 1/6.
1/6,Terminate SIPRNET link SIPRPP01 at 8192 Kbps from RCT-6.
RCT-6,Establish NIPRNET link NIPRPP02 at 4096 Kbps to 2/6.
2/6,Terminate NIPRNET link NIPRPP02 at 4096 Kbps from RCT-6.
RCT-6,Establish BSPE link BSPEPP03 at 472 Kbps to 1/10.
1/10,Terminate BSPE link BSPEPP03 at 472 Kbps from RCT-6.
1/10,Establish DPV0 link DPV0PP04 at 472 Kbps to 2/6.
2/6,Terminate DPV0 link DPV0PP04 at 472 Kbps from 1/10.
1/6,Establish SIPRNET link SIPRPP04 at 8192 Kbps to 1/3.
1/3,Terminate SIPRNET link SIPRPP04 at 8192 Kbps from 1/6.
1/6,Establish NIPRNET link NIPRPP03 at 8192 Kbps to 1/10.
1/10,Terminate NIPRNET link NIPRPP03 at 8192 Kbps from 1/6.
3/6,Establish NIPRNET link SIPRPP03 at 4096 Kbps to 1/10.
1/10,Terminate NIPRNET link SIPRPP03 at 4096 Kbps from 3/6.
MEB,Establish NIPRNET link NIPRZP01 at 8192 Kbps to RCT-6.
RCT-6,Terminate NIPRNET link NIPRZP01 at 8192 Kbps from MEB.
MEB,Establish SIPRNET link SIPRZP01 at 4096 Kbps to RCT-6.
RCT-6,Terminate SIPRNET link SIPRZP01 at 4096 Kbps from MEB.
我正在尝试根据哪些单元的哪些任务对语句进行分组 - 我通过在第一列中编写相关单元来完成此操作,然后我可以在excel中手动排序以组合在一起每个单位的相关任务。
有没有办法让程序在将数据写入新的csv时对数据进行排序?或者有一种方法可以将它们分组:
1/6
Terminate...
Establish...
2/6
Terminate...
Establish...
Establish...
3/6
Terminate...
Terminate...
我感谢任何帮助。
答案 0 :(得分:0)
您应该将列存储在带有列表的字典中,然后将字典写入结果文件:
import csv
from collections import defaultdict
d = defaultdict(list)
with open('Links.csv', 'rb') as inf:
reader = csv.reader(inf, delimiter=',', quoting=csv.QUOTE_NONE)
for row in reader:
d[row[2]].append(row)
with open('outfile.csv', 'w') as outf:
for k,v in d.iteritems():
outf.write('{}\n'.format(k))
for i in v:
up = '{1},Establish {4} link {0} at {3} Kbps to {2}.\n'
down = up.replace('Establish','Terminate').replace('to','from')
outf.write(up.format(*i))
outf.write(down.format(*i))
outf.write('\n')