2012-06-17 84 views
-1

我是新來的python編程..可以有人建議一些方法來做到以下幾點:如何提取序列中的第一個和最後一個字符串?

整個數據存儲在一個文件和來。我不能打擾這個序列。

我想提取鏈的第一個和最後一個節點。有幾個這樣的鏈。數據內容以千兆字節爲單位。

我對如何在python中使用它一無所知。有人可以提供足夠的幫助。

+1

你的意思是有很多數據..哦,好的,謝謝。你能解釋一下這些是如何連鎖的嗎?我不清楚數據結構是如何工作的。 – Levon

+1

'a1 = hi'與'b1 = hello'有什麼關係? – georg

+0

如果在最後有另外一對行說「a1 = python」和「b1 =愚蠢的編程語言」會怎麼樣?你想同時輸出'('hi','好的編程語言')和_'('hi','愚蠢的編程語言')'嗎? – senderle

回答

0

先看看「列表」是什麼,例如。

data[0]=hi 
data[1]=hello 
data[2]=how 
data[3]=to 
data[4]=hello 
data[5]=python 
data[6]=format 
data[7]=computer 
data[8]=python 
data[9]=good programming language 

多維列表,具體取決於您的數據。

data[0][0]=hi 
data[0][1]=hello 
data[0][2]=how 
data[0][3]=to 

data[1][0]=hello 
data[1][1]=python 
data[1][2]=format 
data[1][3]=computer 
data[1][4]=python 
data[1][5]=good programming language 
+3

發佈實際上不工作的代碼不太可能幫助OP –

1

我不太確定你的序列是如何工作的,尤其是如何選擇開始和結束元素。所以我所做的基本上是我設置了一個起始值,然後匹配一次,然後嘗試一遍又一遍地找到相同的值。

首先我爲數據做了一個生成器。正如你所提到的,你有相當多的數據,所以你可能會有一些順序生成器。我仿真與靜態發生器產生的示例行:

>>> def dataReader(): 
     yield 'a1=hi' 
     yield 'b1=hello' 
     yield 'a1=how' 
     yield 'b1=to' 
     yield 'a1=hello' 
     yield 'b1=python' 
     yield 'a1=format' 
     yield 'b1=computer' 
     yield 'a1=python' 
     yield 'b1=good programming language' 

然後我建立一個空列表,將持有的結果和最後一個元素,其被初始化爲初始值

>>> lst = [] 
>>> last = 'hi' # as we want to begin with 'hi' which does not have a duplicate? 

接下來,我瀏覽一下數據,按等號分割並比較最後一個值。我使用值None來標記之前的值已經找到它的重複。爲了使它更簡單一些,我現在完全忽略了key,但是如果您需要確保在匹配新值時前一個鍵與當前值不同,您可以輕鬆添加更多條件。

>>> for line in dataReader(): 
     key, value = line.split('=') 
     if last == None: 
      lst.append(line) 
      last = value 
     elif last == value: 
      lst.append(line) 
      last = None 
>>> lst 
['a1=hi', 'b1=hello', 'a1=hello', 'b1=python', 'a1=python', 'b1=good programming language'] 
相關問題