[英]Converting a month's name to its corresponding number
我有一个包含条目列表的文件,日期包含“Jan”,“Feb”,“Mar”等。
我想要
569207,ngph,RUN,512,16,2012 -Jan-23 01:42,2012-04-23 10:53
成为
569207,ngph,RUN,512,16,2012-01-23 01:42,10:53 2012-04-23。
我写了以下内容:
for line in f:
if re.search(r'Jan', line):
f1.write(line.replace('Jan', '01'))
elif re.search(r'Feb', line):
f1.write(line.replace('Feb', '02'))
elif re.search(r'Mar', line):
f1.write(line.replace('Mar', '03'))
elif re.search(r'Apr', line):
f1.write(line.replace('Apr', '04'))
elif re.search(r'May', line):
f1.write(line.replace('May', '05'))
elif re.search(r'Jun', line):
f1.write(line.replace('Jun', '06'))
elif re.search(r'Jul', line):
f1.write(line.replace('Jul', '07'))
elif re.search(r'Aug', line):
f1.write(line.replace('Aug', '08'))
elif re.search(r'Sep', line):
f1.write(line.replace('Sep', '09'))
elif re.search(r'Oct', line):
f1.write(line.replace('Oct', '10'))
elif re.search(r'Nov', line):
f1.write(line.replace('Nov', '11'))
elif re.search(r'Dec', line):
f1.write(line.replace('Dec', '12'))
哪个有效,但是有更清洁的方法吗? 我希望它遍历大约100行的整个文件,并自动将月份更改为数字。 谢谢。
两种可能性:
python文档值得一读,你可能会发现一个更简单的方法来做更多的事情,而不仅仅是回答这个问题。
至于DIY解决方案,你似乎有很多重复代码,而且不需要正则表达式。 你可以做到
for i, month in enumerate(months,1):
line.replace(month, str(i))
其中months
是months
清单。
datetime就是答案,例如:
>>> import datetime
>>> datetime.datetime.strptime('Mar 2013',"%b %Y")
datetime.datetime(2013, 3, 1, 0, 0)
你也可以使用字典:
month_numbers = {'-Jan-': '-01-', '-Feb-': '-02-', ...}
for k, v in month_numbers.items():
line = line.replace(k, v)
print(line)
您可以使用正则表达式,您可以使用简单的字符串replace()
方法,而无需先检查月份名称是否在字符串中。 我不知道字符串Jan
可以在输入字符串的其他部分,但是IMO更安全地替换-Jan-
到-01-
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.