分隔字符串ValueError:需要多于1个值来解除得到

2024-04-29 19:16:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图拆分字符串,但得到值错误:需要多于1个值才能解压缩

我想我明白了,为什么会出现这种错误,它的发生是因为没有价值可以分割对吗?在

基本上我有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值错误发生在这里?

贝恩体育3HD[23:00-02:00]+1216.8分钟都灵对阵美国巴勒莫城-意大利联赛(意甲)

BeIN Sports 4HD值错误发生在这里?

BeIN Sports 5HD[05:30-07:15]+91.8分钟马赛对安吉尔-法甲联赛2015-2016第7周

我的问题是,如何修复for循环,以便它将所有标题拆分到channelname&tvguide,即使某些字符串不包含tvguide?在

例如,在没有tvguide的频道中(在这个例子中,beinsports2hd,beinsports4hd),它应该使tvguide=“”或类似的东西。在

有什么想法吗?在


Tags: 字符串intree标题fortitle错误channel
2条回答

您可以使用简单的if else。在

x="BeIN Sports 1HD [07:00 - 07:30] + 106.8 min Auto Mundial"

y="BeIN Sports 2H"
ll=[]
ll.append(x)
ll.append(y)
final = [(i,"") if "[" not in i else i.split("[") for i in ll]
print final

输出:[['BeIN Sports 1HD ', '07:00 - 07:30] + 106.8 min Auto Mundial'], ('BeIN Sports 2H', '')]

现在您可以根据需要轻松地处理列表中的这些元组。在

与其尝试分别分配channelname和tvguide,不如使用split方法返回的列表。在

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

这样,您就不必担心频道是否有名称或tvguide,但要确保在channel对象中得到一个字符串。在

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

^{pr2}$

相关问题 更多 >