2014-06-10 180 views
-5

我有一個文本文件,其中包含大量像這樣的行。從文件中提取變量名稱

NOTE: Variable Variable_S1 already exists on file D1.D, using Var_S8 instead. 
NOTE: The variable name more_than_eight_letters_m has been truncated to ratio_s. 
NOTE: Variable ratio_s already exists on file D1.D, using Var_S9 instead. 

我試圖創建一個包含2列的列表:

Variable_S1 Var_S8 
more_than_eight_letters Var_S9 

有人能告訴我如何做到這一點使用SED或Python甚至R'

+3

這看起來你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 –

+0

你想刪除所有沒有下劃線的單詞,然後合併一行的第二個單詞與另一個單詞的第一個單詞相同的行,是嗎? – Beta

回答

1

我不知道的sed或R,但在Python:

>>> import re 
>>> i = """NOTE: Variable Variable_S1 already exists on file D1.D, using Var_S8 instead. 
NOTE: The variable name more_than_eight_letters_m has been truncated to ratio_s. 
NOTE: Variable ratio_s already exists on file D1.D, using Var_S9 instead.""" 
>>> print(re.findall(r'(\w+_\w+)', i)) 
['Variable_S1', 'Var_S8', 'more_than_eight_letters_m', 'ratio_s', 'ratio_s', 'Var_S9'] 

這裏是一個改進版本,它會給你每行的一組變量:

>>> print([re.findall(r'(\w+_\w+)', line) for line in i.split('\n')]) 
[['Variable_S1', 'Var_S8'], 
['more_than_eight_letters_m', 'ratio_s'], 
['ratio_s', 'Var_S9']] 
相關問題