Python split()解包报错:ValueError: not enough values to unpack
问题原因
你踩了个容易忽略的坑:原字符串里的RegState: Registered, home network这一行包含逗号,你先把换行符替换成逗号再用逗号分割,会把Registered, home network拆成两个单独元素——Registered和home network。后者home network里没有: 或:,执行split(': ')只能得到1个元素,自然没法解包成两个变量,于是抛出not enough values to unpack错误。
解决方法
别绕弯子用逗号替换换行,直接按原字符串的换行符\n分割,这样每个元素都是完整的key: value对,包括带逗号的value:
workingResult = "SIMState: READY\nSIMMCC: 262\nSIMMNC: 01\nRegState: Registered, home network\nSigQuality: Good\nSigQualitydBm: -72\nAccessTec: 4G\nLastUpdate: 19.02.20_12:25:37" # 直接按换行分割,得到每个完整的键值对 strip2 = workingResult.split('\n') finalDict = {} for item in strip2: print(f'{type(item)}, {item}') key, value = item.split(': ', 1) # 加maxsplit=1更稳妥,防止value里也出现": " print(key, value) finalDict[key] = value print(finalDict)
补充说明
给split(': ', 1)加第二个参数1(最大分割次数),是为了防止万一某个value里也出现: 的情况,确保只分割第一个: ,后面的内容全部保留为value。
内容的提问来源于stack exchange,提问作者WhiteRau
相关产品推荐
相关产品推荐

