2013-10-11 125 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

正如Ignacio指出的那样,您不应该在第一时间做到这一点。但是我会解释你的错在哪里,以及如何解决它:

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

NO。停。

qs = urlparse.urlparse(url).query 
qsl = urlparse.parse_qsl(qs)