如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。