M24*_*M24 2 python string datetime python-3.x
在 Python3 中,我收到以下错误消息:
ValueError: time data '\u200e07-30-200702:38 PM' does not match format '%m-%d-%Y%I:%M %p'
from datetime import datetime
dateRegistered = '\u200e07-30-200702:38 PM'
# dateRegistered = '07-30-200702:38 PM'
dateRegistered = datetime.strptime(dateRegistered, '%m-%d-%Y%I:%M %p')
print (dateRegistered)
Run Code Online (Sandbox Code Playgroud)
上面的代码用于复制问题。如果我取消注释该行,它会起作用。我收到的字符串似乎已编码,但我无法找出它使用的是哪种编码。或者我的字符串中是否有不可打印的字符?
print ('\u200e07-30-200702:38 PM')
>>>> 07-30-200702:38 PM
Run Code Online (Sandbox Code Playgroud)
您的输入中有一个U+200E LEFT-TO-RIGHT MARK字符。这是一个非打印排版指令,指示任何显示文本的内容切换到从左到右的模式。当打印到已经设置为从左到右显示的控制台(例如西方世界的绝大多数终端)时,该字符串看起来与没有标记的打印没有任何不同。
由于它不是日期的一部分,您可以删除这些字符:
datetime.strptime(dateRegistered.strip('\u200e'), '%m-%d-%Y%I:%M %p')
Run Code Online (Sandbox Code Playgroud)
或者,如果它始终存在,请将其显式添加到您正在解析的格式中,就像格式中已经包含的-and:和空格字符一样:
datetime.strptime(dateRegistered, '\u200e%m-%d-%Y%I:%M %p')
Run Code Online (Sandbox Code Playgroud)
演示:
>>> from datetime import datetime
>>> dateRegistered = '\u200e07-30-200702:38 PM'
>>> datetime.strptime(dateRegistered.strip('\u200e'), '%m-%d-%Y%I:%M %p')
datetime.datetime(2007, 7, 30, 14, 38)
>>> datetime.strptime(dateRegistered, '\u200e%m-%d-%Y%I:%M %p')
datetime.datetime(2007, 7, 30, 14, 38)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8309 次 |
| 最近记录: |