Python:在列表中拆分字符串

Python:在列表中拆分字符串,python,string,url,loops,split,Python,String,Url,Loops,Split,在URL列表中拆分“&”时遇到问题。我知道这是因为我不能直接拆分列表,但我不知道如何避免这个错误。我愿意接受任何建议 def nestForLoop(): lines = open("URL_leftof_qm.txt", 'r').readlines() for l in lines: toke1 = l.split("?") toke2 = toke1.split("&") for t in toke2:

在URL列表中拆分“&”时遇到问题。我知道这是因为我不能直接拆分列表,但我不知道如何避免这个错误。我愿意接受任何建议

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() 
不,停下来

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

正如伊格纳西奥所指出的,你一开始就不应该这样做。但我会解释你哪里出了问题,以及如何解决:

tok2是一个包含两个字符串的列表:在?之前的主URL,以及在&之后的查询字符串。您不想拆分该列表或该列表中的所有内容;您只需要拆分查询字符串。因此:

mainurl, query = l.split("?")
queryvars = query.split("&")
如果您确实要拆分第一个列表中的所有内容,该怎么办?这可能意味着两件不同的事情,当然这两件事情的处理方式不同。但两者都需要在第一个列表上循环(显式,或在列表理解中)。或者:

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


尝试这两种方法以查看不同的输出,希望您能够理解它们在做什么。

我得到一个值错误。可能是因为我的文件中有一些代码在某些行上没有&符号。我怎样才能解决这个问题?没有a的行不会引发任何问题,但是没有a的行?将将第一行更改为
mainurl,u,query=l.partition('?')
。它在'?'上拆分,但在'&'上拆分。@MichaelJerzyRegdosz:如果您实际使用的是我上面写的代码,则在
上拆分,而不是在
上拆分,将不会产生
值错误
;您将在
queryvars
中成功获得一个单元素列表。所以,要么你错了,缺少的是
,要么你写的代码与我展示的不同,在这种情况下,我无法调试我没有看到的代码。
tokens = [token for toke2 in l.split("?")
          for token in toke2.split("&")]