我有一组我正在处理的数据,它们出现在文本文件中,例如:传感器数据
我想从每一行代码中提取RSSI数据。
with open ('datasensorsmall.txt') as f:
for line in f:
TS, Drop, RX, TX, RSSI, CRCData, light, temp, humidity = line.split(" ")
print(RSSI)
但是,它只打印第一个RSSI值,然后我得到一个错误值,它说:
"ValueError: not enough values to unpack (expected 9, got 1)".
我该怎么解决这个问题呢?
发布于 2018-06-30 02:32:28
问题是文本文件中有一个空行。因此,为了避免这种情况,您可以使用类似于
with open ('datasensorsmall.txt') as f:
for line in f:
if not line.strip(): # this line will ignore blank line
TS, Drop, RX, TX, RSSI, CRCData, light, temp, humidity = line.split()
print(RSSI)
发布于 2018-06-30 02:17:13
您可以使用Regex来实现这一点
import re
with open ('datasensorsmall.txt') as f:
for line in f:
rssi = re.findall('RSSI:(.*?)\s*C', line)
print(rssi[0])
发布于 2018-06-30 02:36:17
没有足够的值来解包意味着您的拆分没有产生足够的字符串来分配给所有这些变量。
因此,如果拆分的长度是9,则抛出一个条件,然后进行赋值。
或者避免多次赋值,因为这不太适合它,只需迭代拆分,将与拆分产生的字符串一样多的目标变量赋值给它。
https://stackoverflow.com/questions/51107205
复制相似问题