2014-09-27 10 views
1

그래서 웹에서 일부 정보를 구문 분석하고 있습니다. 여기에 코드가 있습니다.효율적으로 구문 분석 된 텍스트를 분할하고 왼쪽 및 오른쪽 부분을 저장하는 방법

import lxml.html 
from lxml.etree import XPath 

url = "http://gbgfotboll.se/information/?scr=table&ftid=51168" 
date = '2014-10-05' 

rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date)) 
time_xpath = XPath("td[1]/span/span//text()[2]") 
team_xpath = XPath("td[2]/a/text()") 

html = lxml.html.parse(url) 

for i,row in enumerate(rows_xpath(html)): 
    #time = time_xpath(row)[0].strip() 
    team = team_xpath(row)[0] 
    print team 

그리고 인쇄이 : 여기

Partille IF FK - Kode IF 
IK Kongahälla - Romelanda UF 
etc.. 

이 (제거 비 관련 부분) 위의 구문 분석 된 정보의 HTML 코드 :

<a href="?scr=result&amp;fmid=2669197">Partille IF FK - Kode IF</a> 
etc.. 

문자열을 분할하는 효율적인 방법이 있나요 그것을 파싱하면서? 분할은 "-"에서 발생하므로 왼쪽 부분과 오른쪽 부분을 저장합니다.

example string: Partille IF FK - Kode IF 
string1 = Partille IF FK 
string2 = Kode IF 
+0

아마도 구아바의'StringSplitter'를 시도해보십시오. https://www.google.com/url?hl=ko 2Fjavadoc는 2Fcom % 2Fgoogle % 2Fcommon % 2Fbase % 2FSplitter.html 및 EI = WT0nVP-6Kc3WigKCqoGwDA 및 USG = AFQjCNHzx86ZQhw9HamvJpS8y6pK5JlZww 및 SIG2 = wEtirp3clr9Ta8G_sFyJuA 및 BVM = bv.76247554는 d.cGE – sje397

+1

+1 이유는 지상에서 이것은을 downvoted 하였다 %? – smci

답변

0

그냥 분할 및 두 개의 변수, 왼쪽에 하나 오른쪽 하나 지정 : 나는이 같은 두 변수에 갈라 문자열을 저장하려는

s = "Partille IF FK - Kode IF" 
st1, st2 = s.rstrip().split("-") 
st1 
Partille IF FK 
st2 
Kode IF 

을 당신이 만약 각 문자열에 단 하나의 -이 있는지 확인하십시오. 위의 코드는 정상적으로 작동하지만 그렇지 않은 경우 maxsplit을 1로 설정하여 첫 번째 경우에만 분할 할 수 있습니다. 단, 올바른 분할 코드가 아닌지를 아는 것은 불가능합니다. 데이터보기 :

s = "Partille IF FK - Kode -IF" 
st1, st2 = s.split("-",1) 
st1 
Partille IF FK 
st2 
Kode -IF 
+0

그래, 나는 그것에 대해 생각하고 있었지만 더 효율적인 방법으로 파싱하는 동안이 방법은 아프다고 생각했다. –

+0

lxml에 대해서는 확실하지 않지만 beautifulSoup을 사용하면 파싱하는 동안 정규식을 사용할 수 있지만, 그게 더 효율적 일지 모르겠다. –

+0

그래, 더 효율적이라고 생각하지 않아. 어쨌든 위의 코드를 사용 해 주셔서 감사합니다! –

0
>>> a 
'Partille IF FK - Kode IF' 
>>> [i.strip() for i in a.split('-')] 
['Partille IF FK', 'Kode IF']