2012-05-09 96 views
-1

的問題是從一個文本文件中的一堆垃圾數據提取。例如,首先,我需要從文本文件中提取該特定部分:Python數據提取文本文件

%T 525 1:0.00:6425.12 2:0.01:6231.12 3:0.00:3234.51並且持續相當長的時間。

然後,我需要從每個短語中特別提取第三個數據,即6425.12,6231.12和3234.51,然後將其寫入新的文本文件,然後對此數據進行其他編輯。

我正在研究使用這種情況下的正則表達式。任何人都能顯示示例代碼?對於一位經驗豐富的程序員來說,這應該非常簡單。

+0

你發佈的字符串與文件中的所有其他字符串有什麼不同?這是必要的,以便能夠制定一個正則表達式足以挑選出該字符串,而不是下一個字符串,可以(或可能不會)像'%T 526 1:0.00:...' – mgilson

+0

好對不起你們。到目前爲止,我一直在做很多測試和谷歌搜索。我設法使用startswith從其他垃圾中抽出特定部分,並將其寫入新的文本文件中。現在問題是Python中用於在每個短語(6425.12,6231.12,3234.51,...)中的所有第三個數據上進行特定數據提取的函數。我現在沒有整個文本文件。它在另一臺電腦中。我明天可以發佈。但基本上,我需要幫助從每個短語中提取每三分之一的數據。 –

+0

是的,考慮使用正則表達式。 https://en.wikibooks.org/wiki/Python_Programming/Regular_Expression –

回答

1

你不需要re得到的數字...

s='%T 525 1:0.00:6425.12 2:0.01:6231.12 3:0.00:3234.51' 
columns=s.split()[2:] #Create a list of all the columns except the first 2. 
numbers=[c.split(':')[-1] for c in columns] #Split each column on ':' and take the last piece. 

然而,我們需要對文件的結構多一點信息,然後我們才能確定如何挑選出字符串s在第一個地方。

+0

優雅而簡單。當我使用2 split和[]捕獲字符串中的元素時,我的頭腦很複雜。啓發!我希望我能投票,但我不能。新來的。謝謝大家 ! –

+0

我捕獲的%T 525 1:0.00:6425.12 2:0.01:6231.12 3:0.00:3234.51等部分使用startswith和寫入本節到一個新的文本文件。將新的文本文件轉換爲字符串???????其他方法來捕捉這部分?好吧,我會嘗試提供原始文件的更多信息 –

+0

@MelvinAng對不起,我不明白你最近的評論是在問什麼。如果'startswith'足夠好,就用它 - 我懷疑你會從're'獲得任何性能提升。至於將數字寫入新的文本文件,您可以使用'join'方法將我的列表「數字」轉換爲字符串。例如'','。join(numbers)'將在每個數字之間用','創建一個字符串。 – mgilson

1

我不認爲我會訴諸正則表達式,看起來很簡單。

with open(...) as file: 
    for line in file: 
     for word in line.split(): 
      if ':' in word: 
        print word.split(':')[2] # do something with it here