2012-02-03 11 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 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) 

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')] 
関連する問題