如何用Python中的数字替换随机定位的3位数字母值?

时间:2014-07-17 17:57:35

标签: python regex string dictionary

编辑:已解决

很抱歉,如果这是一个noob问题,我尝试了谷歌,IRC,并在经过相当大的努力后,在我无法弄清楚之后在其他地方询问。

无论如何,我正在尝试用我们程序中的值替换月份名称。所有月份都是3个字母。

所以我想把Jan,Feb,...换句话说,用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

2 个答案:

答案 0 :(得分:4)

s = 'abcdefghijklmnop'
d = {'ab':'1', 'ij':'3'}
for i in d:
    s = s.replace(i, d[i])

输出

'1cdefgh3klmnop'

答案 1 :(得分:0)

for month_name,month_number in month_dictionary.items():
    filterOne.replace(month_name,month_number)
print filterOne