2012-02-03 3 views
0

나는 파이썬으로 html 문서를 파싱했고 body 태그의 내용을리스트에 저장하고있다.목록을 사용하여 파이썬에서 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 방법을 분할 줄과 줄로 문자열 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')] 
관련 문제