gpt4 book ai didi

python - 使用 Python csv 模块覆盖 csv 文件中的特定列

转载 作者:行者123 更新时间:2023-12-03 09:27:47 24 4
gpt4 key购买 nike

我正在使用 Python csv 模块读取 csv 文件,每一行如下:

2013-04-16 7:11:01,186744,3,2,2,1.89E-03

然后我将 row[0] 转换为 unix 时间,但随后我想将日期时间替换为我刚刚为 csv 文件的每一行找到的 unix 时间

import pymongo
import datetime
import re
import csv
import calendar

X = []
OBD = []
Y = []

csv_in = open('FakeAPData.csv', 'rb')


for row in reader:
date = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S')
datet = unicode(datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S'))
datett = tuple(int(v) for v in re.findall("[0-9]+", datet))
y = calendar.timegm(datett)
Y.append(y)

因此,我使用 unixtime 值创建列表 Y,但是如何进行替换才能得到这样的输出:

1366097085,186744,3,2,2,1.89E-03

最佳答案

首先,有更好的方法将文本日期时间格式转换为 UNIX 时间戳。直接使用time module将您的代码简化为:

import time
import calendar

timestamp = calendar.gmtime(time.strptime(row[0], '%Y-%m-%d %H:%M:%S'))

但即使是您创建的 datetime 对象也有 .timetuple().utctimetuple()与将 datetime 对象的字符串格式解析回整数元组相比,这些方法在生成 time_struct 元组方面要可靠得多。您也可以直接在 row[0] 上执行此操作,因为 str(datetime.now()) 的输出是 与您开始使用的格式相同。

接下来,写出一个新文件并在完成后用它替换旧文件:

import csv
import time
import calendar
import os

with open('FakeAPData.csv', 'rb') as infile, open('FakeAPData.csv.new', 'wb') as outfile:
writer = csv.writer(outfile)
for row in csv.reader(infile):
timestamp = calendar.gmtime(time.strptime(row[0], '%Y-%m-%d %H:%M:%S'))
writer.writerow([timestamp] + row[1:])

os.rename('FakeAPData.csv.new', 'FakeAPData.csv')

关于python - 使用 Python csv 模块覆盖 csv 文件中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com