【问题标题】:String split() function not doing what's expected字符串拆分()函数没有做预期的事情
【发布时间】:2021-01-16 18:01:58
【问题描述】:

我的拆分功能有问题——我在这里做错了什么? 我在标记的行收到错误:
not enough values to unpack (expected 2, got 1)line 中的值为:;Electronics:iPhone,3999;Galaxy,2999;Xiaomi,1999

第一次拆分后,newCategory 包含 "Electorincs",但 products 仅包含 "i"

from collections import defaultdict
import sys

items = open("store.txt" , "r")
categories= dict()
for line in items:
    if line == '\n':
        break
    details= line.split(':')
    products=details[1]
    newCategory=details[0].lstrip
    categories[newCategory]=dict()
    products=products[0].split(';')
    for p in products:
        name,price=p.split(',')  # THIS LINE.
        name=name.lstrip
        price=price.lstrip
        categories[newCategory][name]=price

【问题讨论】:

  • 你明白错误信息告诉你什么吗?您的拆分返回一个只有一个元素的列表,而您正试图将其解压缩为两个。
  • 我知道,这是因为第一次拆分没有给出完整的句子,只有“i”。

标签: python split


【解决方案1】:

好的,所以请查看您的代码,在阅读上述行并通过“:”拆分代码后,您有一个包含 2 个单元格的列表: #0 包含:Electorincs #1 包含:iPhone,3999;Galaxy,2999;小米,1999

所以通过阅读 products[0] 你基本上是在阅读字符串iPhone,3999;Galaxy,2999;Xiaomi,1999的第一个元素

【讨论】:

    【解决方案2】:

    你应该替换下面的行

    products=products[0].split(';')
    

    products=products.split(';')
    

    【讨论】:

      【解决方案3】:

      不确定你试图做什么,但是 for 循环 “for line in items”意味着它会给你带来一个又一个的字符,这可能是问题的一部分

      【讨论】:

        猜你喜欢
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-12
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        相关资源
        最近更新 更多