正则表达式用括号#2提取键值

时间:2017-12-14 05:11:13

标签: python regex

我希望以[key]值格式从文本中获取键和值:

  1. 键不是固定的,但它将在braets []。
  2. [key](可以为空白)值格式
  3. 价值不能有' [',']'
  4. 值可以有新行(\ n)。
  5. value可以为null。
  6. 最后一个值只能是一行。 (忽略2行或更多行)
  7. 例如,

    [AA] abcd 1234 !@#$ _+{}[]:"
    blah blah
    [abc-def] this is also value.
    [BB]abcd defg
    [CC]
    
    blah blah
    blah blah
    

    在这种情况下,我希望得到以下对。

    ' AA' :' abcd 1234!@#$ _ + {}:"     blah blah'

    ' ABC-DEF' :'这也是价值。'

    ' BB' :' abcd defg'

    ' CC' :''

    我的Python代码是这样的:

    import re
    
    text ='''
    [AA] abcd 1234 !@#$ _+{}:"
    blah blah
    [abc-def] this is also value.
    [BB]abcd defg
    [CC]
    
    blah blah
    blah blah
    '''
    pattern = re.compile(this is what I want)
    result = {m.group('field'):m.group('value') for m in pattern.finditer(text)}
    

    这可能吗?

1 个答案:

答案 0 :(得分:0)

我认为你不需要正则表达式。

with open('input_file.txt', 'r') as f:
    lines = f.readlines()

storage = {}
for line in lines:
    split = line.split(']')
    key = split[0][1:]
    value = split[1:]
    storage[key] = value

我们在这里做的是将每一行分成第一个']'发生了。该分割的第0个元素将是' [key',所以我们取第0个元素,从该元素的第1个位置到结尾,产生'键'。然后该值就是拆分的其余部分。