2014-09-19 230 views
-3

我正在学习python中的文件概念。这里我想从文本文件中提取一些文本(这是加粗格式)。但我不知道该怎么做。如何使用python从文本文件中提取特定信息?

这里我的示例文本文件:

{ “词汇表”:{ “称号”: “例如词汇表”, “GlossDiv”:{“称号”: “S”, “GlossList”:{”光泽条目“:{”ID“:”SGML“,”SortAs“:”SGML“,”GlossTerm“:”标准通用标记语言“, ”缩写“:”SGML“,”缩写“:”ISO 8879: ,“GlossDef”:{“para”:“元标记语言,用于创建标记语言,如DocBook。”, “GlossSeeAlso”:[ “GML”, “XML”]}, “GlossSee”: “标记”}}}}}

{ “词汇表”:{ “标题”: “示例词汇表”,” “GlossDiv”:{“GlossEntry”:{“ID”:“SGML”,“SortAs”:“SGML”,“GlossTerm”:“标准通用标记语言” , “缩写”:“SGML”,“Abbrev”:“ISO 8879:1986”,“GlossDef”:{“para”:“元标记语言,用于创建诸如DocBook之类的标记语言。, “GlossSeeAlso”:[ “GML”, “XML”]}, “GlossSee”: “标记”}}}}}

{ “词汇表”:{ “标题”: “示例词汇表”,” GlossDiv“:{”title“:”b“”GlossList“:{”GlossEntry“:{”ID“:”SGML“,”SortAs“:”SGML“,”GlossTerm“ , “缩写”:“SGML”,“Abbrev”:“ISO 8879:1986”,“GlossDef”:{“para”:“元标记语言,用于创建诸如DocBook之类的标记语言。, “GlossSeeAlso”:[ “GML”, “XML”]}, “GlossSee”: “标记”}}}}}

{ “词汇表”:{ “标题”: “示例词汇表”,” “GlossDiv”:{“GlossList”:{“ID”:“SGML”,“SortAs”:“SGML”,“GlossTerm”:“标准通用标记语言” , “缩写”:“SGML”,“Abbrev”:“ISO 8879:1986”,“GlossDef”:{“para”:“元标记语言,用于创建诸如DocBook之类的标记语言。, “GlossSeeAlso”:[ “GML”, “XML”]}, “GlossSee”: “标记”}}}}}

{ “词汇表”:{ “标题”: “示例词汇表”,” GlossDiv“:{”Glossary“:{”ID“:”SGML“,”SortAs“:”SGML“,”GlossTerm“:”标准通用标记语言“ , “缩写”:“SGML”,“Abbrev”:“ISO 8879:1986”,“GlossDef”:{“para”:“元标记语言,用于创建诸如DocBook之类的标记语言。, “GlossSeeAlso”: “GML”, “XML”]}, “GlossSee”: “标记”}}}}

,我需要的输出是这样的:

"title": "S" ; "para": "A meta-markup language, used to create markup languages such as DocBook." 
"title": "a" ; "para": "A meta-markup language, used to create markup languages such as DocBook." 
.... 

谁能帮助我在Python中做到这一点?

+4

这个功课是? – 2014-09-19 05:24:47

+1

提示:JSON,JSON使用python解析 – kundan 2014-09-19 05:38:03

+0

我学到了一些json和python基本程序。到现在为止我没有得到任何东西。而我不知道如何做这个程序。帮帮我 – 2014-09-19 05:55:27

回答

2

由于没有尝试显示任何代码,我只会给出一些一般性建议。文件中的每一行实际上都是一个称为dictionary的Python数据结构。您可以阅读每一行,并使用Python的json库进行解析并将其存储为字典(dict)。有关Python的更多内容,请参见Python字典here

5.5。字典 Python中内置的另一个有用的数据类型是字典(参见映射类型 - 字典)。字典有时在其他语言中被称为“联想记忆”或“联想阵列”。与由一系列数字索引的序列不同,字典由键索引,可以是任何不可变类型;字符串和数字始终可以是键。如果元组只包含字符串,数字或元组,则可以用作元组;如果元组直接或间接包含任何可变对象,则不能将其用作关键字。您不能使用列表作为关键字,因为可以使用索引分配,切片分配或像append()和extend()这样的方法来修改列表。

最好将字典视为无序的键值对,并要求键是唯一的(在一个字典中)。一对大括号创建一个空字典:{}。在大括号中放置一个以逗号分隔的键:值对列表,可将初始键:值对添加到字典中;这也是字典写在输出上的方式。

字典上的主要操作是用某个键存储一个值,并提取给定键的值。也可以使用del删除一个key:value对。如果您使用已在使用的密钥进行存储,则与该密钥关联的旧值将被遗忘。使用不存在的键提取值是错误的。

在此StackOverflow question的接受答案中可以找到从文件中读取多个JSON对象的一些想法。特别是最后一个示例代码片段。

一旦读入字典,您可以对数据执行字典查找。如果我读字典到名为dictvar变量然后我可以做这样的事情打印glossarytitle

print (dictvar['glossary']['title']) 

,如果我是读你的文件上面的第一个例子会打印:

example glossary 

你实际上可以生成一个程序,用最少量的代码做你想做的事

+2

慷慨的答案! – GreenAsJade 2014-09-19 05:54:05

+0

你可能是对的,但我认为即使提供了信息,OP也有一个陡峭的学习曲线。 – 2014-09-19 06:01:40

+0

@MichaelPetch:你并没有在任务中使用任何一个最艰难的部分:一次从文件中读取一个数据块。幸运的是,它们似乎被空行隔开。 – Borodin 2014-09-19 06:34:29

相关问题