2013-10-11 3 views
0

URL 목록에 '&'을 나눌 때 문제가 있습니다. 직접 목록을 나눌 수 없기 때문에이 오류를 해결하는 방법을 알 수는 없기 때문에 그 사실을 알고 있습니다. 나는 어떤 제안이든 열려 있습니다.Python : 목록에서 문자열 분할하기

def nestForLoop(): 
    lines = open("URL_leftof_qm.txt", 'r').readlines() 
    for l in lines: 
     toke1 = l.split("?") 
     toke2 = toke1.split("&") 
     for t in toke2: 
      with open("ampersand_right_split.txt".format(), 'a') as f: 
        f.write 
    lines.close() 

nestForLoop() 

답변

1

이그나시오가 지적했듯이, 처음부터 그렇게해서는 안됩니다. 그러나 당신이 잘못 가고있는 곳과 그 문제를 해결하는 방법을 설명해 드리겠습니다.

toke2는 두 개의 문자열 즉,? 앞의 주 URL과 & 뒤에 나오는 쿼리 문자열의 목록입니다. 그 목록이나 그 목록에있는 모든 것을 나누고 싶지는 않습니다. 쿼리 문자열을 분할하기 만하면됩니다. 그래서 :

mainurl, query = l.split("?") 
queryvars = query.split("&") 

당신이이 첫 번째 목록에 모든 것을 분할 할 않았다 경우? 물론 다르게 수행되는 두 가지가 있습니다. 그러나 둘 모두 첫 번째 목록에서 루프 (명시 적 또는 목록 이해)를 요구합니다. 어느 쪽이 :

tokens = [toke2.split("&") for toke2 in l.split("?")] 

또는

tokens = [token for toke2 in l.split("?") 
      for token in toke2.split("&")] 

는 서로 다른 출력을보고 둘을 시도하고 잘하면 당신은 그들이 무엇을하고 있는지 이해하게 될 것입니다.

+0

값 오류가 발생합니다. 아마 내 파일에 &이없는 코드가 있기 때문일 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까? –

+0

&가없는 행은 & 아무것도 표시하지 않지만 행은? 할 것이다. 첫 줄을'mainurl, _, query = l.partition ('?')'로 변경하십시오. – abarnert

+0

그것은 '?' '&'에는 없습니다. –

8

. 중지.

qs = urlparse.urlparse(url).query 
qsl = urlparse.parse_qsl(qs) 
관련 문제