0
私はPythonを初めて使い、キーで辞書をソートしようとしています。キーは日時オブジェクトです。 4月1日、4月3日、4月4日に動作しますが、4月4日を1と2の間にします。here.Python 3.5:キーで辞書をソートする(日付)
私はちょうどそれを手に入れません。すべてのヘルプは...感謝
マイコード:
for part in msg.walk():
if partNum == 0:
rawDate = part['Date']
date = parse_date(rawDate)
if part.get_content_type() == 'text/plain':
content = part.get_payload()
splitted_content = content.split('\r\n')
pending_tb = str(splitted_content[8])[70:].strip()
if partNum == 2:
values[date] = pending_tb
#TODO sort by date
partNum += 1
write_file(OrderedDict(sorted(values.items(), key=lambda t: t[0])))
parse_date機能:
def parse_date(rawdate):
date_tuple = email.utils.parsedate_tz(rawdate)
if date_tuple:
date = datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple))
formatted_date = date.strftime("%a, %d %b %Y %H:%M:%S")
return formatted_date
else:
print("ERROR: kon datum niet parsen.")
exit(-1)
そしてWRITE_FILE機能:出力の
def write_file(values):
filepath = "temp.csv"
file = open(filepath, "a+")
for k,v in sorted(values.items()):
if len(k) > 0:
file.write(k + "\t\t" + v + "\n")
PrintScreenを:http://prntscr.com/ao6qst
ありがとうございます。
あなたの出力からは、出力が日付でソートされていない(数字のように)が、辞書順にソートされているようです。つまり、 'F'は' M'の前に 'S'よりも前に来ます。 – Dzhao
非常に簡単です。' datetime'オブジェクトは、書式設定する代わりにキーとして保管してください。 formatted_date = date.strftime( "%a、%d%b%Y%H:%M:%S") 'と' return date'という行をコメントアウトしてください。 –
それは意味がある...私は今まで気付かなかった..ありがとう! – JC97