2016-09-21 3 views
0

私はテキストファイルに変換した巨大なHTMLファイルを持っています。 (ファイルはFacebookのホームページのソースです)。テキストファイルには、特定のキーワードがある場所にあると仮定します。たとえば、「some_keyword:[bla bla]」と入力します。 some_keywordの後ろにあるすべての異なるbla blasをどのように出力すればよいでしょうか?巨大なファイル内のキーワードの内容を検索して操作する

{id:"1126830890",name:"Hillary Clinton",firstName:"Hillary"} 

この形式のページには50種類の名前があるとします。テキストが非常に大きく、それを読んだり()したり、その行を検索しようとするとクラッシュすることを考えれば、 "name:"の後ろに続くすべての名前をどのように表示しますか?

サンプルファイル:ファイルにデータを足すための責任者なので、あなたのコメントに基づいて

shortProfiles:{"100000094503825":{id:"100000094503825",name:"Bla blah",firstName:"Blah",vanity:"blah",thumbSrc:"https://scontent-lax3-1.xx.fbcdn.net/v/t1.0-1/c19.0.64.64/p64x64/10354686_10150004552801856_220367501106153455_n.jpg?oh=3b26bb13129d4f9a482d9c4115b9eeb2&oe=5883062B",uri:"https://www.facebook.com/blah",gender:2,i18nGender:16777216,type:"friend",is_friend:true,mThumbSrcSmall:null,mThumbSrcLarge:null,dir:null,searchTokens:["Bla"],alternateName:"",is_nonfriend_messenger_contact:false},"1347968857":

+0

このデータはJSON形式で保存されていますか? –

+0

@MoinuddinQuadriいいえ、元はHTMLで、これをtxtファイルに変換しました。それはHTMLの助けとしてそれを保つだろうか? – Nathan

+0

答えを追加しました。あなたがファイルにデータを書き込む責任があるからです。それを有効なjson形式で記述します。 PythonでJSONモジュールをチェックしてください:https://docs.python.org/2/library/json.html –

答えて

0

。 JSON形式のデータを書き込み、json.loads()を使用してファイルからそれを読むよう:

import json 
json_file = open('/path/to/your_file') 
json_str = json_file.read() 
json_data = json.loads(json_str) 


for item in json_data: 
    print item['name'] 

説明:

dataが動的内で変更されます

{id:"1126830890",name:"Hillary Clinton",firstName:"Hillary"} 

を格納する変数であると言うことができますファイル内で書き込み操作を実行しているコード。今使用してファイルにこのリストを書く

a = [] 
for item in page_content: 
    # data = some xy logic on HTML file 
    a.append(data) 

json.dump()

+0

私が話しているファイルはFacebookのホームページです。 – Nathan

+0

@Nathanあなたは実際にHTMLを操作していますか? – vmonteco

+0

答えを更新しました。それは役に立ちます。 –

0

私はちょうど私がちょうどに対処に関するすべてのコメントに同意するにもかかわらず、そこにこれを投げると思ったその代わりとしてリストに追加htmlを直接またはFacebookのAPIを使用して(おそらく最も安全な方法)、Pythonのオープンファイルオブジェクトは、ファイル全体をメモリに読み込まずに行を生成するジェネレータとして使用でき、reモジュールを使ってテキストから情報を抽出できます。

これがそうのように行うことができます。もちろん

import re 

regex = re.compile(r"(?:some_keyword:\s\[)(.*?)\]") 

with open("filename.txt", "r") as fp: 
    for line in fp: 
     for match in regex.findall(line): 
      print(match) 

をこれだけのファイルは、「行ベース」の形式である場合に動作しますが、最後の効果は、あなたが上にある唯一のラインがロードされていることですいつでもメモリに保存することができます。

herereモジュール

hereためのPython 2のドキュメントである私はPythonでファイルオブジェクトの発電能力を詳細にドキュメントを見つけることができませんreモジュール

ためのPython 3のドキュメントである、それはに思えますそれらのよく知られた秘密の一つである...あなたがPythonの文書のどこに詳細があるか分かっていれば、このパラグラフを編集して削除してください。

関連する問題