I'm writing a Python script. I need to return line that contain largest 'uid' field from a text file. For example, in the below text file example:
{
"uid": 683,
"user_id": "2",
"timestamp": datetime.datetime(2020, 5, 17, 16, 39, 54),
"status": 1,
"punch": 0,
}, {
"uid": 684,
"user_id": "4",
"timestamp": datetime.datetime(2020, 5, 17, 16, 41, 20),
"status": 1,
"punch": 0,
}
Return Text File ex:
{
"uid": 684,
"user_id": "4",
"timestamp": datetime.datetime(2020, 5, 17, 16, 41, 20),
"status": 1,
"punch": 0,
}
Here is my solution, instead of reading a text file I used a text from string variable text
.
Final result (entry with maximal uid) is contained inside max_entry
variable. This result I write as string into text file result.txt
.
import datetime
text = """
{
"uid": 683,
"user_id": "2",
"timestamp": datetime.datetime(2020, 5, 17, 16, 39, 54),
"status": 1,
"punch": 0,
}, {
"uid": 684,
"user_id": "4",
"timestamp": datetime.datetime(2020, 5, 17, 16, 41, 20),
"status": 1,
"punch": 0,
}
"""
data = eval('[' + text + ']')
max_entry = max(data, key = lambda e: e['uid'])
print(max_entry)
with open('result.txt', 'w', encoding = 'utf-8') as f:
f.write(str(max_entry))
Output:
{'uid': 684, 'user_id': '4', 'timestamp': datetime.datetime(2020, 5, 17, 16, 41, 20), 'status': 1, 'punch': 0}