Python 转换一个月';将其名称添加到相应的编号
我有一个包含条目列表的文件,日期包含“一月”、“二月”、“三月”等 我想要 2012年1月23日01:42 成为 569207,ngph,RUN,512,16,2012-01-23 01:42,2012-04-23 10:53 我写了以下内容:Python 转换一个月';将其名称添加到相应的编号,python,date,Python,Date,我有一个包含条目列表的文件,日期包含“一月”、“二月”、“三月”等 我想要 2012年1月23日01:42 成为 569207,ngph,RUN,512,16,2012-01-23 01:42,2012-04-23 10:53 我写了以下内容: for line in f: if re.search(r'Jan', line): f1.write(line.replace('Jan', '01')) elif re.search(r'
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行的整个文件,并自动将月份更改为一个数字。谢谢。有两种可能:
for i, month in enumerate(months,1):
line.replace(month, str(i))
其中,
months
是月份列表 您还可以使用字典:
month_numbers = {'-Jan-': '-01-', '-Feb-': '-02-', ...}
for k, v in month_numbers.items():
line = line.replace(k, v)
print(line)
使用regexpes可以使用简单的string
replace()
方法,而无需首先检查字符串中是否有月份名称。我不知道字符串Jan
是否可以位于输入字符串的其他部分,但在我看来,将-Jan-
替换为-01-
日期时间是比较安全的答案,例如:
>>> import datetime
>>> datetime.datetime.strptime('Mar 2013',"%b %Y")
datetime.datetime(2013, 3, 1, 0, 0)
检查位于的格式指令检查这个:我应该提到,我希望它遍历大约100行的整个文件,并自动将月份更改为数字。对,但这是另一个问题,不是吗?最好将关于日期操作的SO问题和关于文件IO的问题分开,这样可以得到更灵活的解决方案。Datetime具有区域设置意识,因此是一个更好的解决方案。