Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:解析标记的字符串,将其划分为子字符串以填充json文件_Python_String_Dictionary - Fatal编程技术网

Python:解析标记的字符串,将其划分为子字符串以填充json文件

Python:解析标记的字符串,将其划分为子字符串以填充json文件,python,string,dictionary,Python,String,Dictionary,“Q: 如何检查文本文件是否包含所有标记(例如,在查找表中预先定义),然后解析这些标记之间出现的所有子字符串,并使用它们填充新的json文件 示例文本文件: # AB C: definition of ab c ## DEF: definition of def ### GHI: definition of ghi more defintion of ghi a tricky : appears in this defintion 标记查找表示例: # AB C : ab c ## DEF

Q: 如何检查文本文件是否包含所有标记(例如,在查找表中预先定义),然后解析这些标记之间出现的所有子字符串,并使用它们填充新的json文件

示例文本文件:

# AB C: 
definition of ab c
## DEF: definition of def
### GHI: 
definition of ghi
more defintion of ghi
a tricky : appears in this defintion
标记查找表示例:

# AB C : ab c
## DEF : def
### GHI : ghi
## JKL : jkl
所需的json输出:

{
 'ab c': 'definition of ab c',
 'def': 'definition of def',
 'ghi': 'definition of ghi',
 'jkl': ''
}
> Warning: Tag '## JKL' is missing
目前的做法: 创建两个标记字典,一个类似于示例查找表,第二个以第一个的值作为键,以空字符串作为值

text = '''# AB C: 
        definition of ab c
        ## DEF: definition of def
        ### GHI: 
        definition of ghi
        more defintion of ghi
        a tricky : appears in this defintion'''

lookup = {
    '# AB C' : 'ab c',
    '## DEF' : 'def',
    '### GHI' : 'ghi',
    '## JKL' : 'jkl',
    }
lookup_rev = {
    'ab c' : '',
    'def' : '',
    'ghi' : '',
    'jkl' : '',
    }
但是我不知道如何检查字符串中的子字符串(标签)以及如何提取每个标签后面的子字符串

重要提示1:标记可以包含空格,例如:“##AB C”。此外,HasTag的确切数量很重要,需要包括在查找中

要点2:定义可能是多行的,并且“:”也可能出现在定义中,因此这不是保存拆分点

印刷品:

{'ab c': 'definition of ab c',
 'def': 'definition of def',
 'ghi': 'definition of ghi\n'
        '        more defintion of ghi\n'
        '        a tricky : appears in this defintion',
 'jkl': ''}
> Warning: Tag jkl is missing

请展示您到目前为止所做的工作。我不明白“解析这些标记之间的所有子字符串”是什么意思,您正在解析什么,本例中的标记是什么?示例文件中多个“#”背后的逻辑是什么?它是一个标记文件@eleliasMultiline不受支持,并且定义中的“:”也会将其弄乱。文本的最后更新:标记可能包含空格(例如#AB C)。这仍然会导致错误,很抱歉经常更改示例。最后,是否可以不使用lookup_表字符串而仅使用lookup dict来执行此操作?@gustavz是的,这是可能的。看看我的答案。
{'ab c': 'definition of ab c',
 'def': 'definition of def',
 'ghi': 'definition of ghi\n'
        '        more defintion of ghi\n'
        '        a tricky : appears in this defintion',
 'jkl': ''}
> Warning: Tag jkl is missing