用python3更改csv中的日期格式

2024-06-25 05:49:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要交换日期格式在一个大的csv从DD/MM/yyy到YYYY-MM-DD。 我可以打印出我想用它们替换的值,但实际上我很难重写csv。在

这是我的代码:

import csv
from datetime import datetime

with open('partner_new_testteam.csv', newline='') as data:
    reader = csv.reader(data)

    for list in reader:
        for string in list:
            try:
                datetimeobject = datetime.strptime(string, '%d/%m/%Y')
                changedDate = datetimeobject.strftime('%Y-%m-%d')
                print(changedDate)

            except:
                continue

我知道这段代码相当草率,但请记住,我刚刚开始编程,谢谢!在


Tags: csv代码inimportfordatadatetimestring
3条回答
import csv
import re
from datetime import datetime

lines = []
# open file as read-only
with open('partner_new_testteam.csv', "r", newline='') as data:
    reader = csv.reader(data)
    # go over all of its rows, and the row's items and change 
    # items that match the date format
    for row in reader:
        for i, string in enumerate(row):
            if re.match(r"\d+\/\d+\/\d+", string):
                datetimeobject = datetime.strptime(string, '%d/%m/%Y')
                new_string = datetimeobject.strftime('%Y-%m-%d')
                row[i] = new_string
                print("Replaced", string, "with", new_string)
        # save edited, and originally correct ones to new list
        new_row = row
        lines.append(new_row)

# write new rows by overwriting original file
with open('partner_new_testteam.csv', "w", newline='') as data:
    writer = csv.writer(data)
    writer.writerows(lines)

您当前的代码实际上不会更改任何内容。您从未替换任何内容,也没有以写访问权限打开文件。在

您也不应该像使用try:那样使用if。正则表达式匹配x/x/x,其中x是任意数量的数字。在

使用pandas->;pd.read_csv读取csv,然后使用pd.to_datetime

例如

data = pd.DataFrame()

data['A'] = ['11/12/2018']

打印(数据)

^{pr2}$

使用pd.to_日期时间在

data.A = pd.to_datetime(data['A'])

打印(数据)

           A
0 2018-11-12

根据“打开”命令,.csv文件以只读方式打开。在

您需要将“w”参数传递给“open”命令。在

相关问题 更多 >