python-3.x - 每个月租金的Python单独行
问题描述
我被困在一段 Python 代码上。
从 XML 文件中,我们在以下代码中成功解析数据,不包括 while 循环和相关变量。我们需要将一个表加载到 SQL 中,其中包含整个租期计划,按月,在租约期内。租金总是在每月的第一天计费,但金额会在不同的时间以不同的金额升级,具体取决于租约。目标是每个计费月返回一行,其中包含要计费的每个月租金的日期 (YYYY-MM-DD)。如果租期为 60 个月,并且在第 25 个月出现租金上涨,我们需要显示 60 行,其中前两年的金额重复 24 次,其余时间重复 36 次。该方案需要灵活适应某些情况和其他一些可变条件的年度增长。
有人可以指出我在 While 循环中出错的地方以获得所需的结果吗?
import xml.etree.ElementTree as ET
import pyodbc
import dateutil.relativedelta as rd
import dateutil.parser as pr
tree = ET.parse('DealData.xml')
root = tree.getroot()
for deal in root.findall("Deals"):
for dl in deal.findall("Deal"):
dealid = dl.get("DealID")
for dts in dl.findall("DealTerms/DealTerm"):
dtid = dts.get("ID")
dstart = pr.parse(dts.find("CommencementDate").text)
dterm = dts.find("LeaseTerm").text
darea = dts.find("RentableArea").text
for brrent in dts.findall("BaseRents/BaseRent"):
brid = brrent.get("ID")
begmo = int(brrent.find("BeginIn").text)
if brrent.find("Duration").text is not None:
duration = int(brrent.find("Duration").text)
else:
duration = 0
brentamt = brrent.find("Rent").text
brper = brrent.find("Period").text
perst = dstart + rd.relativedelta(months=begmo-1)
perend = perst + rd.relativedelta(months=duration-1)
billmocount = begmo
while billmocount < duration:
monthnum = billmocount
billmocount += 1
billmo = perst
while billmo < perend:
billper = billmo
billmo += rd.relativedelta(months=1)
if dealid == "706880":
print(dealid, dtid, brid, begmo, dstart, dterm, darea, brentamt, brper, duration, perst, perend, \
monthnum, billper)
我得到的结果如下所示:
706880 4278580 45937180 1 2018-01-01 00:00:00 60 6200 15.0 rsf/year 36 2018-01-01 00:00:00 2020-12-01 00:00:00 35 2020-11-01 00:00:00
706880 4278580 45937181 37 2018-01-01 00:00:00 60 6200 18.0 rsf/year 24 2021-01-01 00:00:00 2022-12-01 00:00:00 35 2022-11-01 00:00:00
解决方案
我遇到的问题只是 print 语句的缩进。通过缩进以下文本,我能够得到预期的结果:
if dealid == "706880": print(dealid, dtid, brid, begmo, dstart, dterm,dalea, brentamt, brper, duration, perst, perend, \ monthnum, billper)
推荐阅读
- python-3.x - IBM Cloud with Watson Assistant:API 调用返回“未知错误,代码:422”
- r - 如何摆脱 R 中 geom_point 中填充较深颜色的内点?
- excel - 如何避免在 O365 中以只读模式打开 Word 文档
- javascript - JSON.parse 读取名称带有“-”
- java - Spring Boot UnsatisfiedDependencyException 创建名称为无法解析的循环引用的 bean 时出错
- mysql - 我想查询客户在特定年份完成的交易数量,但每个客户的输出应该以表格格式逐年出现
- java - 我想更改原始文件夹中的视频,但不能播放其他视频
- python - ModuleNotFoundError:没有名为“路径”的模块
- javascript - 在 html 表的 top-1 位置添加一行
- django - 通过heroku在亚马逊云前端提供django应用程序时,发布请求出现403 Forbidden错误