Python 和变量设置或从文件读取但值完全相同时的Strptime差异

Python and Strptime Difference When Variable Set or Read From File But Exact Same Value

在那里争取世界上最差的头衔,但我基本上可以用一句话概括这种怪异。

这很好用:

dnow=datetime.datetime.now()
racetime = '2016-01-05 13:39:53.968000'
NewRaceTime = datetime.datetime.strptime(racetime, '%Y-%m-%d %H:%M:%S.%f')
timedifference = dnow - NewRaceTime

但是,当以完全相同的格式从文件中读取比赛时间时,它将不起作用。

如果我删除 racetime = '2016-01-05 13:39:53.968000' 事情开始横向发展。

如果我使用:

print racetime

它 returns 完全一样 2016-01-05 13:39:53.968000. 我看不到任何额外的空白 space 或文件或 IDE 上的任何内容。据我所知,它是完全一样的。

但是即使没有明显的区别 Python 也发现了一些东西:

Traceback (most recent call last):
  File "C:/Users/Desktop/PycharmProjects/Project/Script.py", line 153, in <module>
    NewRaceTime = datetime.datetime.strptime(racetime, '%Y-%m-%d %H:%M:%S.%f')
  File "C:\Python27\lib\_strptime.py", line 328, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: 

我的设置没有区别

racetime = '2016-01-05 13:39:53.968000'

并将其保留为已经从文件中读取的比赛时间。未转换的数据对我来说仍然是白色 space 之类的,但似乎没有。

更奇怪的是,我使用了与 XML 几乎完全相同的东西,而且效果很好。从 XML 读取将其设置为 .text 的时间,并且 Python 能够毫无问题地将其与当前时间进行比较。

我无法解决这个问题。看起来很愚蠢,一定是我遗漏了一些愚蠢的东西,但我在这里没有想法。

您的文件末尾有一个新行 \n。你可以像这样去掉它:

import datetime

dnow = datetime.datetime.now()

with open("test.txt", 'r') as f:
    racetime = f.read()
racetime = racetime.rstrip()

NewRaceTime = datetime.datetime.strptime(racetime, '%Y-%m-%d %H:%M:%S.%f')
timedifference = dnow - NewRaceTime

print racetime

行尾如“\r\n”可能是问题所在。