【发布时间】:2014-09-08 17:31:18
【问题描述】:
编辑:已解决
对不起,如果这是一个菜鸟问题,我尝试了谷歌、IRC,并在经过相当多的努力后自己无法弄清楚之后在其他任何地方询问。
无论如何,我正在尝试用我的程序中的值替换月份名称。所有月份都是 3 个字母长。
所以我想用 Jan, Feb, .. Dec 换句话,用 01,02, .. 12 替换它们
问题是,它们现在被放置在一个大字符串中,日期的其余部分以数字形式放置,并且月份之间没有确切的距离。
我该怎么做?
这是我正在尝试做的一个可视示例:
假设你有字符串
'abcdefghijklmnop'
在哪里
'bcd','fgh', and 'nop' are values 01,02,and 03 respectively.
我想将字符串返回为:
a01e02ijklm03
到目前为止,我所能做的只是一次对 3 个字母进行排序并根据字典测试它们的值,但第二次我遇到非字典值(几乎是立即)它给了我一个错误并停止.
有人可以帮忙吗?
下面我刚刚提到的断码:
#filterTwo changes month names into numbers (ex: Jan -> "01", Dec -> "02", ..)
month_dictionary = {
'Jan': "01",
'Feb': "02",
'Mar': "03",
'Apr': "04",
'May': "05",
'Jun': "06",
'Jul': "07",
'Aug': "08",
'Sep': "09",
'Oct': "10",
'Nov': "11",
'Dec': "12"
}
filterTwo = ''
words = []
for start in range(0, len(filterOne),3):
words.append(filterOne[start:(start + 3)])
for word in words:
filterTwo += "%s" % (month_dictionary[word])
print filterTwo
【问题讨论】:
-
为什么不在访问字典之前做一个 if 检查呢?
if word in month_dictionary: filterTwo += ...我不确定您的代码是否能正常工作,您正在检查每 3 个字符,例如索引 0,3,6,9... 但是如果月份从索引 2,4 开始... ? -
第一部分的好主意,不敢相信我没有考虑过,哈哈。至于 2,4 索引部分,您也绝对正确,我承认这一点,但我不确定如何修复它。我想发布我所拥有的一切,尽管以表明我并没有试图让其他人为我做所有的工作。
标签: python regex string dictionary