簡體   English   中英

如何在 Python 3 中更改 csv 中的日期格式

[英]How can I change date format in csv in Python 3

我是 Python 新手,我在 CSV 文件中有一組數據,我想將其格式更改為

'%Y-%m-%dT%H:%MZ''%m/%d/%Y'

我在 Windows 上運行 Python 3。 我已經多次搜索 SO(和其他網站),但似乎沒有一個示例/解決方案實際上轉換了輸出的格式。 我已經閱讀了 Python 在線文檔,但無法從中獲取任何有意義的內容。

這是我剛剛嘗試的代碼,它不會更改列中任何條目的格式:

with open('some_file', 'r') as source:
    with open('some_other_file', 'w') as result:
        writer = csv.writer(result, lineterminator='\n')
        reader = csv.reader(source)
        source.readline()
        for row in reader:
            ts = row[17]
            ts = datetime.strptime(ts, '%Y-%m-%dT%H:%MZ').strftime("%m/%d/%Y")
            if ts != "":
                writer.writerow(row)
source.close()
result.close()

我沒有收到任何錯誤,但時間戳的格式也沒有變化。

假設你有一個日期x

x = "2017-07-01T15:55Z"

您可以將其轉換為datetime.datetime與您的格式%Y-%m-%dT%H:%MZ

from datetime import datetime
d = datetime.strptime(x, '%Y-%m-%dT%H:%MZ')

然后格式化:

d.strftime("%m/%d/%Y")

你會得到:

'07/01/2017'

完整的代碼是:

from datetime import datetime
x = "2017-07-01T15:55Z"
x = datetime.strptime(x, '%Y-%m-%dT%H:%MZ').strftime("%m/%d/%Y")

======== 編輯 ========

對於您的后續問題:您需要在格式化ts后更改row

ts = row[17]
ts = datetime.strptime(ts, '%Y-%m-%dT%H:%MZ').strftime("%m/%d/%Y")
if ts != "":
    row[17] = ts # this is what you miss
    writer.writerow(row)

如果我正確理解您的問題,您的 CSV 文件中有一個字符串,看起來像'2017-08-10T20:47Z' 您應該將其轉換為datetime.datetime實例

from datetime import datetime
dt = datetime.strptime('2017-08-10T20:47Z', '%Y-%m-%dT%H:%MZ')

這會給你一個datetime.datetime對象: datetime.datetime(2017, 8, 10, 20, 47) 然后,您可以根據需要重新格式化它

dts = dt.strftime('%m/%d/%Y')

dts給出結果'08/10/2017'以寫入更新的 CSV 文件。

import csv
from datetime import datetime

with open('some_file.csv', 'r') as source:
    with open('some_other_file.csv', 'w') as result:
        writer = csv.writer(result, lineterminator='\n')
        reader = csv.reader(source)
        source.readline()
        for row in reader:
            ts = datetime.strptime(row[0], '%m/%d/%y %H:%M').strftime("%Y-%m-%d %H:%M:00")
            print(ts)
            row[0]=ts
            if ts != "":
                writer.writerow(row)
source.close()
result.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM