我正在尝试解析来自设备的反馈字符串。我只是想运行一个简单的
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(': ')
我会得到正如人们所期望的单行。这应该是一个简单的转储到两个变量中,但我没有收到错误。我还尝试将分隔符修剪为 ':'
且没有空格,但遇到了相同的错误。
我在这里缺少什么?
我不确定
'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'}
我想如果你愿意的话,你也可以在这里使用字典理解