ValueError:时间数据“无”与格式“%Y-%m-%dT%H:%M:%S.%f”不匹配

问题描述

对于节点“ TransactionDate”,在为策略“ POL000002NGJ”更新它之前,我有一个逻辑。 我尝试实现的逻辑是,如果现有的'TransactionDate'

XML中的交易日期格式:2020-03-23T10:56:15.00

请注意,如果我像下面那样解析DateTime值,则效果很好,但是我不想对值进行硬编码...我想将其解析为字符串对象以处理任何日期时间,格式为“”%Y -%m-%dT%H:%M:%S.%f“”“ ...

# <TransactionDate> 
today = datetime.Now()
TransactionDate = doc.find('TransactionDate')
Date = '2020-03-24T10:56:15.00' 
prevIoUs_update = datetime.strptime(Date,"%Y-%m-%dT%H:%M:%s.%f")

if prevIoUs_update < today:
     today = prevIoUs_update - timedelta(days=-5)
     TransactionDate = today.strftime("%Y-%m-%dT%H:%M:%s.%f")

下面的代码在将其解析为DateTime对象时,我遇到了一个问题..我被打到这里,并在stackoverflow和python论坛中引用了其他答案,但是仍然在这里有结构,无法解决问题...

如果有任何帮助修复将非常有帮助。谢谢。下面的代码使用lxml并获得支持支持下面的代码将很有帮助。因为我已经为其他节点完成了。我的理解是Date变量的调用方式为None。

# <TransactionDate> 
today = datetime.Now()
TransactionDate = doc.find('TransactionDate')
Date = str(TransactionDate)
prevIoUs_update = datetime.strptime(Date,"%Y-%m-%dT%H:%M:%s.%f")

if prevIoUs_update < today:
     today = prevIoUs_update - timedelta(days=-5)
     TransactionDate = today.strftime("%Y-%m-%dT%H:%M:%s.%f")

完整代码在下面

from lxml import etree
from datetime import datetime,timedelta
import random,string


doc = etree.parse(r'C:\Users\python.xml') 

# <PolicyId> - Random generated policy number
Policy_Random_Choice = 'POL' + ''.join(random.choices(string.digits,k=6)) + 'NGJ'

# <TransactionDate> 
today = datetime.Now()
TransactionDate = doc.find('TransactionDate')
Date = str(TransactionDate)  
prevIoUs_update = datetime.strptime(Date,"%Y-%m-%dT%H:%M:%s.%f")

if prevIoUs_update < today:
     today = prevIoUs_update - timedelta(days=-5)
     TransactionDate = today.strftime("%Y-%m-%dT%H:%M:%s.%f")
                                  
#Parsing the Variables
replacements = [Policy_Random_Choice,TransactionDate ]

targets = doc.xpath('//ROW[PolicyId="POL000002NGJ"]')
for target in targets:
    target.xpath('./PolicyId')[0].text = replacements[0]
    target.xpath('.//TransactionDate')[0].text = replacements[1]
 
print(etree.tostring(doc).decode())

示例XML

<TABLE>
   <ROW>
      <PolicyId>POL000002NGJ</PolicyId>
      <BusinessCoverageCode>COV00002D3X1</BusinessCoverageCode>
      <TransactionDate>2020-03-23T10:56:15.00</TransactionDate>
   </ROW>
   <ROW>
      <PolicyId>POL111111NGJ</PolicyId>
      <BusinessCoverageCode>COV00002D3X4</BusinessCoverageCode>
      <TransactionDate>2020-03-23T10:56:15.00</TransactionDate>
   </ROW>
</TABLE>

解决方法

也许find方法是错误的。试试这个

VOLK_IMPLEMENTATION