私はプログラミングにかなり慣れていないので、特定の列で 2 つの .csv ファイルを比較し、追加、削除、および変更をチェックする python プログラムを作成しようとしています。.csv ファイルは両方とも次の形式であり、同じ量の列が含まれ、BillingNumber をキーとして使用します。
BillingNumber,CustomerName,IsActive,IsCreditHold,IsPayScan,City,State
"2","CHARLIE RYAN","Yes","No","Yes","Reading","PA"
"3","INSURANCE BILLS","","","","",""
"4","AAA","","","","",""
列 0、1、2、および 4 のみを比較する必要があります。これを達成するためにさまざまな方法を試しましたが、うまくいきませんでした。csv.DictReader
またはを使用してそれらを辞書にロードできることは理解していますcsv.reader
が、その後は行き詰まります。それらをメモリにロードした後、どこからどのように開始すればよいか正確にはわかりません。
以前にこれを試しました:
import time
old_lines = set((line.strip() for line in open(r'Old/file1.csv', 'r+')))
file_new = open(r'New/file2.csv', 'r+')
choice = 0
choice = int( input('\nPlease choose your result format.\nEnter 1 for .txt, 2 for .csv or 3 for .json\n') )
time.sleep(1)
print(".")
time.sleep(1)
print("..")
time.sleep(1)
print("...")
time.sleep(1)
print("....")
time.sleep(1)
print('Done! Check "Different" folder for results.\n')
if choice == 1:
file_diff = open(r'Different/diff.txt', 'w')
elif choice == 2:
file_diff = open(r'Different/diff.csv', 'w')
elif choice == 3:
file_diff = open(r'Different/diff.json', "w")
else:
print ("You MUST enter 1, 2 or 3")
exit()
for line in file_new:
if line.strip() not in old_lines:
file_diff.write("** ERROR! Entry "+ line + "** Does not match previous file\n\n")
file_new.close()
file_diff.close()
追加の行がある場合、または行が欠落している場合、その行以降のすべてが異なるものとしてログに記録されるため、正しく機能しません。また、私がやりたいことではない行全体を比較します。これは基本的に単なる出発点であり、ある程度は機能しましたが、必要なものに対して十分に具体的ではありません. 私は本当に始めるのに良い場所を探しています。ありがとう!