使用分隔符时Python split() 失败

问题描述 投票:0回答:1

我正在尝试解析来自设备的反馈字符串。我只是想运行一个简单的

split()
但它会抛出此错误:
ValueError: not enough values to unpack (expected 2, got 1)
。这对我来说毫无意义。

workingResult = "SIMState: READY\nSIMMCC: 262\nSIMMNC: 01\nRegState: Registered, home network\nSigQuality: Good\nSigQualitydBm: -72\nAccessTec: 4G\nLastUpdate: 19.02.20_12:25:37"

  strip1 = workingResult.replace('\n', ',')
  strip2 = list(strip1.split(','))
  finalDict = {}
  for item in strip2:
    print(f'{type(item)}, {item}')
    key, value = item.split(': ')  #<-- problem child
    print(key,value)
    finalDict[key] = value

如果它尝试使用单个分配的“问题子”行,

key = item.split(': ')
我会得到正如人们所期望的单行。这应该是一个简单的转储到两个变量中,但我没有收到错误。我还尝试将分隔符修剪为
':'
且没有空格,但遇到了相同的错误。

我在这里缺少什么?

python split
1个回答
0
投票

我不确定

'home network'
是否属于
'RegState'
'SigQuality'
,但简单地做
workingResult.split('\n')
会产生这样的结果:

['SIMState: READY', 'SIMMCC: 262', 'SIMMNC: 01', 'RegState: Registered, home network', 'SigQuality: Good', 'SigQualitydBm: -72', 'AccessTec: 4G', 'LastUpdate: 19.02.20_12:25:37']

转换为

dict

时,这似乎可以正常工作
workingResult = "SIMState: READY\nSIMMCC: 262\nSIMMNC: 01\nRegState: Registered, home network\nSigQuality: Good\nSigQualitydBm: -72\nAccessTec: 4G\nLastUpdate: 19.02.20_12:25:37"

strip1 = workingResult.split('\n')

finalDict = {}
for item in strip1:
    k, v = item.split(': ')
    finalDict[k] = v
    
print(finalDict)
# >>> {'SIMState': 'READY', 'SIMMCC': '262', 'SIMMNC': '01', 'RegState': 'Registered, home network', 'SigQuality': 'Good', 'SigQualitydBm': '-72', 'AccessTec': '4G', 'LastUpdate': '19.02.20_12:25:37'}

我想如果你愿意的话,你也可以在这里使用字典理解

© www.soinside.com 2019 - 2024. All rights reserved.