回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>我有一个csv文件,每行有2个时间戳,包括日期、时间和值:</p>
<pre><code>02.04.2019 00:30:30;02.04.2019 00:36:05;6354
02.04.2019 02:36:05;02.04.2019 03:41:40;3453
02.04.2019 03:41:40;02.04.2019 04:47:15;5456
</code></pre>
<p>当我尝试将日期和时间字符串转换为datetime时:</p>
<pre><code>with open("file.csv", "rt", encoding='utf-8-sig') as source:
reader = csv.reader(source)
for row in csv.reader(source, delimiter=";"):
dateTimeBegin = row[0]
dateTimeEnd = row[1]
begin_intervall = datetime.datetime.strptime("%d.%m.%Y %I:%M:%S", dateTimeBegin)
end_intervall = datetime.datetime.strptime("%d.%m.%Y %I:%M:%S", dateTimeEnd)
</code></pre>
<p>我得到:</p>
<pre><code>Traceback (most recent call last):
File ".\compare.py", line 48, in <module>
begin_intervall = datetime.datetime.strptime("%d.%m.%Y %I:%M:%S", dateTimeBegin)
File "C:\Users\foobar\AppData\Local\Programs\Python\Python38-32\lib\_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\Users\foobar\AppData\Local\Programs\Python\Python38-32\lib\_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '%d.%m.%Y %I:%M:%S' does not match format '02.04.2019 00:30:30'
</code></pre>
<p>为什么呢?当我尝试像</p>
<pre><code>date_time_str ="08.04.2018 05:35:38"
date_time_obj = datetime.datetime.strptime(date_time_str, '%d.%m.%Y %I:%M:%S')
</code></pre>
<p>它很好用</p>
<p>编辑:
我交换了格式和时间字符串,并使用了一些其他数据:</p>
<pre><code>02.04.2019 01:30:30;02.04.2019 02:36:05;6354 #works
02.04.2019 02:36:05;02.04.2019 03:41:40;3453 #works
02.04.2019 03:41:40;02.04.2019 04:47:15;5456 #works
03.04.2019 00:25:03;03.04.2019 01:30:12;5997 #ERROR
03.04.2019 01:30:12;03.04.2019 02:35:21;5993
03.04.2019 02:35:21;03.04.2019 03:40:30;5994
</code></pre>
<p>错误仍然是:</p>
<pre><code>Traceback (most recent call last):
File ".\new.py", line 12, in <module>
begin_intervall = datetime.datetime.strptime(dateTimeBegin, "%d.%m.%Y %I:%M:%S")
File "C:\Users\foobar\AppData\Local\Programs\Python\Python38-32\lib\_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\Users\foobar\AppData\Local\Programs\Python\Python38-32\lib\_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '03.04.2019 00:25:03' does not match format '%d.%m.%Y %I:%M:%S'
</code></pre>
<p>好像是00:25:03。但是%I是24小时格式</p>