2014-09-19 75 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

相關問題