2016-12-06 77 views
2

我想從一個文件,這個結構中提取數據提取數據使用Python和寫入新文件

 //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) 

的直覺是,我們讀取文件字符一個字符和跟蹤,我們沿途看到任何'的。當我們遇到第一個時,我們將下一個字符寫入輸出文件,直到遇到第二個字符,等等。

它不處理無效輸入,並且不執行緩衝或任何幻想。但是,如果你只有小文件,這是適當的,這是應該做的。 它也沒有用逗號排列你的輸出,但是這不應該太難。

+0

感謝您的時間,這工作。還有一個問題,我怎樣才能給這個腳本添加一條斷線? – kennechu

+0

在'if char ==''「中:'你可以檢查你是否已經在字符串中。如果是這樣,請將逗號和換行符寫入輸出文件。 –

1

假設你有輸入作爲一個文本文件

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

嗨SuWon,謝謝你的時間,一個問題.. 即時通訊運行腳本作爲Python extract.py(提取是我的文件的名稱),我得到以下錯誤: 迴旋(最近最後一次調用最後): 文件「extract.py」,第6行,在 如果m.group(1)不無: AttributeError的:「NoneType」對象有沒有屬性「組」 不知道我在想念的東西。 – kennechu

+0

@kennechu對不起。我剛剛做了一個更正。請再試一次。 – SuWon