python日期补0_Python为CSV-fi中日期中的数字添加前导零

这篇博客介绍了如何在Python中处理Excel电子表格中缺少前导零的日期问题。作者使用CSV文件作为中介,通过检查日期的长度和数值范围,为年份添加前导零,并处理月份和日期的不足两位数的情况。最终,修复后的日期被写入新的CSV文件。
摘要由CSDN通过智能技术生成

在Win8上使用python3.3。我认为自己是个脚本新手。我试图在没有前导零的Excel电子表格中处理日期。一年总有2位数字,一个月先出,然后一天在中间。我可以提取Excel列,将其单独放入文件中。我可以通过下面的一些可识别的日期和行的格式来确定:

1188年(年月日)

11188(问题日期)

12188(问题日期)

13188(mddyy)

21188(mddyy)

111188(年月日)

我想我的问题有两个部分:

(1) 使用Python修改时,哪种类型的文件最容易处理(例如XLSX、XLS、CSV、TXT等)

(2) 有没有关于用Python编写以下逻辑的提示…也许可以使用函数?在

下面是我的逻辑,我想申请,因为我知道没有办法实际判断日期是否只有5位数,以“11”或“12”开头,所以我想把错误改为,这样我们就可以回去手动修正这些数字。这个想法是体力劳动越少越好。在年底总是2位数字表示年份,因此需要立即解析出剩余的数字

如果年份数字从“00”到“30”,则附加一个前导“20”,形成一个4位数的年份

否则附上一个前导的“19”组成一个4位数的年份

计算除去年份数字后剩余的位数

如果total digits left=2,则解析出第一个和第二个数字,并将前导零加到两个数字上

否则,如果剩余总位数=3,则

如果前两个数字是“11”或“12”,则将最终结果打印为“错误”

否则,如果前两个数字是“10”,则按原样进行解析,并将前导零添加到第三个数字

否则,解析出第一个数字并加上前导零,然后按原样解析出剩余的2个数字

否则总位数为4,则不执行任何操作

确保日期以新的格式放回最终结果

非常感谢你的帮助,让我自己开始行动!在

我的旅程

起初,我需要帮助我把我的逻辑输入Python,然后与以下问题作了斗争,但最终还是成功地与时间,研究和stackoverflow的帮助人员:读取/写入/附加CSV文件,填充前导零,填充年份的前导数字,语法,不正确的数据类型等等……感谢所有这些帮助!!!在

完成以下代码!!!!!!!在import csv

# Change to location of CSV file

with open('c:\\Users\\Weez\\Desktop\\csv_test.csv', newline='') as csvfile:

csvreader = csv.reader(csvfile)

for line in csvreader:

baddate = line[0]

year = int(baddate) % 100

md = int(baddate) // 100

# Check year values

if year < 10:

year = str(200)+str(year)

elif year <= 50:

year = str(20)+str(year)

else:

year = str(19)+str(year)

# Check month and day values

if md < 100:

month = md // 10

month = str(month).zfill(2)

day = md % 10

day = str(day).zfill(2)

elif md >= 1000:

pass

elif md <= 109:

month = md // 10

day = md % 10

day = str(day).zfill(2)

elif md == 110:

month = md // 100

month = str(month).zfill(2)

day = md % 100

elif md == 120:

month = md // 100

month = str(month).zfill(2)

day = md % 100

elif md <= 129:

month = str("XX")

day = str("XX")

else:

month = md // 100

month = str(month).zfill(2)

day = md % 100

dateresult = str(month)+str(day)+str(year)

print(dateresult)

# modes 'a' = append, 'w' = write, 'r' = read and other modes

with open('c:\\Users\\Weez\\Desktop\\csv_test_output.csv', 'a') as csvoutput:

csvoutput.write(dateresult)

csvoutput.write('\n')

print('\n')

print('\n')

str(input("Process complete! Press Enter to finish!"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值