以下のコードは、csvファイルのfile1とfile2を調べています。各ファイルの一意のキーに基づいて、それらをcsv相互参照ファイルと比較し、一致するものがあれば、file1とfile2の一意の識別子を比較します。一致するものがあれば、file2の値を選択し、それ以外の場合は、file1から値を選択して書き込みます。比較、解析、書き込みのCSVファイル
import csv, datetime, calendar
global_dic = {}
with open('D:\\hello.csv', 'r') as file0:
reader1 = csv.reader(file0, delimiter='\t')
header = next(reader1)
for row in reader1:
key = (row[0] + '|' + row[1] + '|' + row[2] + '|' + row[3])
global_dic[key] = {header[0]: row[0], header[1]: row[1], header[2]: row[2], header[3]: row[3], header[4]: row[4], header[5]: row[5], header[6]: row[6], header[7]: row[7], header[8]: row[8], header[9]: row[9]}
with open('D:\\file1.csv', 'r') as master:
master_indices = dict(((r[0] + r[1] + r[2] + r[3] + r[4]), i) for i, r in enumerate(csv.reader(master)) if '/' in r[0])
with open('D:\\file2.csv', 'r') as hosts:
with open('results1.csv', 'w') as results:
reader = csv.reader(hosts)
writer = csv.writer(results)
writer.writerow(next(reader, []) + ['RESULTS'])
for row in reader:
if '/' in row[0]:
key = row[1] + row[2] + row[3] + row[4]
value = row[6]
if key in global_dic:
meow = datetime.datetime.strptime(row[0], '%m/%d/%Y %H:%M:%S') # change str time to date/time obj && add .%f for ms consolidation
unix_timestamp = calendar.timegm(meow.timetuple()) # do the conversion to unix stamp
time_ms = unix_timestamp * 1000
index = master_indices.get(row[0] + row[1] + row[2] + row[3] + row[4])
if index is not None:
a = ''
else:
writer.writerow('value' + ',' + str(global_dic[key]['cpKey']) + ',' + str(global_dic[key]['SCADA Key']) + ',' + str(value) + ',' + str(time_ms) + ',' + str(time_ms) + ',' + '0' + ',' + '0' + ',' + '0' + '\n')
に問題必要なヘルプ: 私はmaster_indeciesからR [6]を持参する方法を知っていけない試合があるとき、私はしかし、ファイルを書き込むことができます一致するものが存在しないとき。私はそれがマッチング処理中に問題を作成するよりも、辞書に[6] Rが含まれている場合
if index is not None:
# HELPPPPPPPPPP
else:
writer.writerow('value' + ',' + str(global_dic[key]['cpKey']) + ',' + str(global_dic[key]['SCADA Key']) + ',' + str(value) + ',' + str(time_ms) + ',' + str(time_ms) + ',' + '0' + ',' + '0' + ',' + '0' + '\n')