2016-12-06 3 views
2

を書く私は、ファイルからデータを抽出しようとしている。この構造のデータを抽出し、新しいファイル

 //Side Menu 
     market: 'Market', 
     store: 'Store', 
     stores: 'Stores', 
     myNotes: 'My Notes', 
     logout: 'Logout', 
     //Toast 
     activeUserHasChanged: 'Resetting app - the active user has changed.', 
     loginHasExpired: 'Your login has expired.', 
     appIsReseting: 'The app is resetting.', 

私が欲しいのは、単一引用符の間にあるすべてのテキストを抽出することで、新しいファイルに入れて、私はPythonが良い選択肢かもしれないと思うが、私はプログラミングとPythonの初心者だと思ったが、何かを試みたが運がなかった。

私の予想される出力は次のようになります。

  Market, 
     Store, 
     Stores, 
     My Notes, 
     Logout, 
     Resetting app - the active user has changed, 
     Your login has expired, 
     The app is resetting, 

だから、この上の任意のヘルプは理解されるであろう。

よろしくお願いいたします。

+0

予想される出力(新しいファイル)がどのように表示されるかを投稿します。 – Nicarus

+0

完了、私は質問を編集し、私の予想される出力を入れます。 ありがとうございます。 – kennechu

答えて

2

簡単な解決策のようなものです:

in_string = False 
with open('infile.txt','r') as fr, open('outfile.txt','w') as fw: 
    for char in fr.read(): 
    if char == "'": 
     in_string = in_string != True # XOR 
    elif in_string: 
     fw.write(char) 

直感我々は、ファイルの文字ずつ読んで、私たちは道に沿って見任意の'を追跡することです。最初に遭遇すると、次の文字が出力ファイルに書き込まれます。

無効な入力を処理せず、バッファリングや何も気にしません。しかし、あなたがちょうど良いファイルを持っているなら、これは整形式であるべきです。 また、出力をコンマで区切っては書いていませんが、ここからやるのは難しいことではありません。あなたはテキストファイルとして

import re 
fid = open('your input file','rb') 
output = open('output file','wb') 
for i in fid: 
    m = re.match(r"['\"](.*?)['\"]",i) 
    if m is not None: 
     output.write(m.group(1)+'\r\n') 
fid.close() 
output.close() 

R「'\」[' \ 『]』この正規表現は、あなたが単一引用符の間に何かを見つけることができるようになるの入力を持っていると仮定すると

+0

お時間を頂き、ありがとうございます。もう1つの質問ですが、このスクリプトにブレンドラインを追加するにはどうすればいいですか? – kennechu

+0

'if char ==" '":'では、すでに文字列の中にいるかどうかを確認できます。その場合は、カンマと改行を出力ファイルにも書き込んでください。 –

1

。何も見つからない場合は、スキップしてください。これが参考になることを願っています。

+0

こんにちはSuwon、時間のおかげで、1つの質問.. 私はこのスクリプトをPython extract.py(extractは私のファイルの名前です)として実行していますが、次のエラーが表示されます: raceback(最新の呼び出し最後): で ファイル "extract.py"、6行目は、m.group(1)Noneでない場合: はAttributeError:イム不足している何かが 'NoneType' オブジェクトが属性 'グループ' を持っていない は知ってはいけません。 – kennechu

+0

@kennechu申し訳ありません。私はちょうど訂正をした。もう一度お試しください。 – SuWon

関連する問題