我正在尝试拆分字符串,但出现ValueError:需要多个值来解压

我想我明白,为什么会发生此错误,因为没有值可拆分而发生?

基本上我有for循环从xml返回字符串

for channel in tree.findall("channel"):
    title = channel.find('title').text
    channelname,tvguide = title.split("[")
    print(channelname,tvguide)


当我打印标题时,我会看到以下内容:

BeIN Sports 1HD [07:00-07:30] + 106.8分钟自动世界

BeIN Sports 2HD ValueError发生在这里吗?

BeIN体育3HD [23:00-02:00] + 1216.8分钟托里诺FC VS美国巴勒莫城-意大利甲级联赛(意甲)

BeIN Sports 4HD ValueError发生在这里吗?

BeIN Sports 5HD [05:30-07:15] + 91.8分钟马赛奥林匹克VS昂热-法国联赛1 2015-2016一周7

我的问题是,我该如何解决循环问题,以便即使某些字符串不包含电视指南,也可以将所有标题拆分为频道名和电视指南?

例如,在没有电视指南的频道中(在本例中为BeIN Sports 2HD,BeIN Sports 4HD),应使tvguide =“”或类似的名称。

有什么想法吗?

最佳答案

与其尝试分别分配通道名和电视指南,不如使用split方法返回的列表。

for channel in tree.findall("channel"):
    title = channel.find('title').text
    description = title.split("[")
    print description


这样,您不必担心频道是否具有名称或电视指南,但请确保在频道对象中获取字符串。

as Jon Clements suggested, we still need to figure out if its allowed to access description[1] and as he suggested an elegant way to do is str.partition

for channel in tree.findall("channel"):
    title = channel.find('title').text
    description = title.partition("[") # you get a tuple with three elements head, separator and tail.
    #head is the portion before the separator, separator itself and tail the rest of the portion of the string
    print description

关于python - 分割字符串ValueError:需要多个值才能解压,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32858053/

10-09 18:49