从文件创建包含Regex的字典

时间:2013-12-05 06:27:23

标签: python

我有一个包含以下内容的文件:

 (стат.{0,4}) (\d+) : $1 $2
 (пункт.{0,3}) (\d+): $1 $2
 (\d+) ((январ|феврал|март|апрел|ма|июн|июл|авг|сентябр|октябр|ноябр|декабр).{0,3}) : $1 $2

如何从这个文件中创建一个类似这样的字典?我需要在正则表达式中用$替换$,并将r'添加到字典中的键和值,

 dic = {r'(стат.{0,4}) (\d+)' : r'\1 \2',
        r'(пункт.{0,3}) (\d+)': r'\1 \2',
        r'(\d+) ((январ|феврал|март|апрел|ма|июн|июл|авг|сентябр|октябр|ноябр|декабр).{0,3})' : r'\1 \2'}

提前谢谢

1 个答案:

答案 0 :(得分:2)

您无需添加r。这是特定于python解析器告诉它将字符串解释为原始字符串。当您从文件中读取字符串时,它们已经是“原始”。

在这种情况下,它可能很简单:

with open('file') as fin:
    d = {}
    for line in file:
        key, value = line.split(':')
        d[key.strip()] = value.replace('$', '\').strip()

或者,用codecs.open打开它可能会更好:

import codecs
with codecs.open('file', 'rb', 'utf-8') as fin:
    ...