{
"First Name": "Jonathan",
"Last Name": "Thomas",
"Marital Status": "married or civil partner",
"Sex": "Male",
"Age (Years)": 46,
"Retired": true,
"Distance Commuted to Work (miles)": 13.72,
"Employer Company": "Begum-Williams",
"Dependants": 1,
"Yearly Salary (\u00c2\u00a3)": 54016,
"Yearly Pension (\u00c2\u00a3)": 0,
"Address Street": {
"Address Street": "00 Wheeler wells",
"Address City": "Chapmanton",
"Address Postcode": "L2 7BT"
},
"Credit Card Number": {
"Credit Card Number": "4529436854129855",
"Credit Card Start Date": "08/12",
"Credit Card Expiry Date": "11/26",
"Credit Card CVV": 583,
"Bank IBAN": "GB37UMCO54540228728019"
},
"Vehicle Make": {
"Vehicle Make": "Nissan",
"Vehicle Model": "ATS",
"Vehicle Year": 1996,
"Vehicle Type": "Coupe"
}
我有客戶資料,標題順序隨機寫入。專案的 JSON 要求高于訂單。所以我在下面寫了一個代碼來放置正確的順序并轉換為型別。
l = []
with open("userdata.csv", 'r') as data_file:
reader = csv.reader(data_file)
headers = next(reader)
for reader_row in reader:
d = {}
d[headers[11]] = str(reader_row[11])
d[headers[13]] = str(reader_row[13])
d[headers[14]] = str(reader_row[14])
d[headers[18]] = str(reader_row[18])
d[headers[3]] = int(reader_row[3])
d[headers[16]] = bool(reader_row[16]
d[headers[4]] = float(reader_row[4])
d[headers[5]] = str(reader_row[5])
d[headers[10]] = int(reader_row[10]) if reader_row[10] else None
d[headers[17]] = int(reader_row[17])
d[headers[15]] = int(reader_row[15])
d[headers[0]]={'Address Street': str(reader_row[0]),
'Address City': str(reader_row[1]),
'Address Postcode': str(reader_row[2])
}
d[headers[8]]={'Credit Card Number': str(reader_row[8]),
'Credit Card Start Date': str(reader_row[6]),
'Credit Card Expiry Date': str(reader_row[7]),
'Credit Card CVV': int(reader_row[9]),
'Bank IBAN' : str(reader_row[12])
}
d[headers[19]]={'Vehicle Make': str(reader_row[19]),
'Vehicle Model': str(reader_row[20]),
'Vehicle Year': int(reader_row[21]),
'Vehicle Type': str(reader_row[22])
}
l.append(d)
print(d)
然后,我想為開始日期和結束日期之間超過 10 年的所有客戶保存一個 JSON 檔案。
with open("remove_ccard.json", 'w', encoding='utf-8') as remove:
json.dump([d for d in l if d['Credit Card Expiry Date'[-2:]] - d['Credit Card Start Date'[-2:]] > 10], remove)
但是我在那條線上遇到錯誤,你能幫我修復我的最后一個代碼,或者只是指導我寫錯的部分?
謝謝
uj5u.com熱心網友回復:
改用日期時間
from datetime import datetime
#Replacing d['Credit Card Expiry Date'[-2:]] - d['Credit Card Start Date'[-2:]] > 10
start_date = datetime.strptime(d['Credit Card Start Date'],"%m/%y")
end_date = datetime.strptime(d['Credit Card Expiry Date'],"%m/%y")
當你減去它們時,你會得到天數的差異。您的代碼的最后一部分將是
with open("remove_ccard.json", 'w', encoding='utf-8') as remove:
json.dump([d for d in l if end_date - start_date > 10*365.25], remove)
uj5u.com熱心網友回復:
將字串轉換為日期時間
from datetime import datetime
start = "08/12"
end = "11/26"
date_time_obj1 = datetime.strptime(start, '%m/%y')
date_time_obj2 = datetime.strptime(end, '%m/%y')
c = date_time_obj1 - date_time_obj2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353739.html
