2012-02-03 49 views
0

我已經解析了python中的html文檔,並且我將body標籤的內容存儲在列表中。下面是代碼:在Python中使用列表訪問HTML解析的數據

import urllib, re 
text = urllib.urlopen("http://fiji4.ccs.neu.edu/~zerg/lemurcgi/lemur.cgi?d=0&g=p&v=algorithm&v=javed").read() 
data = re.compile(r'.*?<BODY>(.*?)<HR>', re.DOTALL).match(text).group(1) 
print data 

以下的輸出:

 6   3 
    12603  235   1 
    37210  363   3 
    64618  348   2 
     4   4 
    80073  560   1 
    80560  504   1 
    80875  807   1 
    80917  636   1 

我想每個新行存儲在一個新的列表。 需要幫助做到這一點。我是python的新手。 謝謝, ghbhatt。

回答

2
#!/bin/python 

data = """6   3 
    12603  235   1 
    37210  363   3 
    64618  348   2 
     4   4 
    80073  560   1 
    80560  504   1 
    80875  807   1 
    80917  636   1""" 

lists = [line.split() for line in data.split("\n")] 

print lists 

編輯:data.splitlines()可能比data.split("\n")更加便於攜帶。

2
l = [] 
for line in data.splitlines(): 
    l.append(line.split()) 

l = [line.split() for line in data.splitlines()] 

l現在是:

[['6', '3'], 
['12603', '235', '1'], 
['37210', '363', '3'], 
['64618', '348', '2'], 
['4', '4'], 
['80073', '560', '1'], 
['80560', '504', '1'], 
['80875', '807', '1'], 
['80917', '636', '1']] 

這將數據存儲爲字符串列表清單。如果你只知道那裏是整數,你可以這樣做:

l = [] 
for line in data.splitlines(): 
    l.append([int(a) for a in line.split()]) 

l = [] 
for line in data.splitlines(): 
    l.append(map(int, line.split())) 

l = [map(int, line.split()) for line in data.splitlines()] 

它創建:

[[6, 3], 
[12603, 235, 1], 
[37210, 363, 3], 
[64618, 348, 2], 
[4, 4], 
[80073, 560, 1], 
[80560, 504, 1], 
[80875, 807, 1], 
[80917, 636, 1]] 
1

使用split方法拆分將字符串轉換爲行和t漢特定列:

import urllib, re 
text = urllib.urlopen("http://fiji4.ccs.neu.edu/~zerg/lemurcgi/lemur.cgi?d=0&g=p&v=algorithm&v=javed").read() 
data = re.compile(r'.*?<BODY>(.*?)<HR>', re.DOTALL).match(text).group(1) 

list_data = [] 
data_lines = data.split("\n") # Split the string to list of lines 
for line in data_lines: 
    row = line.split() # Split the line to numbers 
    list_data.append(row) 

for row in list_data: 
    print row 
0

我不知道的是,你想:

[re.findall(r'\d+', line) for line in data.split('\n')]