![](/img/trans.png)
[英]ValueError when reading RSA key from .PEM file using ImportKey
[英]ValueError when reading from a file
我有一个python脚本,该脚本从文件devices.txt中读取项目,然后填充字典。 现在,该文件具有以下结构:
uniqueId,RoomLabel,Label,State,Frequency
例如:
1001,lounge,lamp,False,6789
现在,当python单独读取时,就可以了。 但是,当我进一步填充文件时:
1001,lounge,lamp,False,5169,1002,lounge,tv,False,6789
它吐出:
unId = int(value[0])
ValueError: invalid literal for int() with base 10: ''
这是在程序此点运行的代码:
with open("devices.txt") as file:
for line in file:
value = line.rstrip('\n').split(",")
unId = int(value[0])
rmLabel = value[1]
label = value[2]
state = value[3]
freq = int(value[4])
irTable[unId] = rmLabel, label, state, freq
考虑到这一点,我看不到在哪里找到以10为底的int(),我在数学上很糟糕,但是据我了解,因为它以10为底,所以它会看到一个小数正确?
错误消息ValueError: invalid literal for int() with base 10: ''
表示以下含义:
您要求Python通过调用int()
将对象转换为整数。
因为您没有指定基数,所以它假定默认值为10
(十进制)(例如,您可以通过指定16
的基数来告诉它解析十六进制数字: int('ff', 16)
)。 导致此异常的值是''
(空字符串)。 因此,不能使用以10为底的空字符串(在这种情况下为任何其他基)将空字符串''
转换为整数。
在该异常的正上方显示了对int()
调用发生的确切代码行:
unId = int(value[0])
因此,您知道在某些时候value[0]
等于''
。
造成这种情况的原因很可能是您的*.csv
文件中包含空白字段或空白行。 打印line
和value
以查看发生了什么。
这应该可以帮助您找出代码和/或数据中的问题,以及如何读取Python异常。 但是,修复此错误之后,您应该真正使用内置的csv
模块来解析CSV文件,如@Joran Beasley建议的那样。
from csv import DictReader
print list(DictReader(open("devices.txt")))
对我来说似乎容易多了
它正在尝试将以逗号分隔的行上的第0个值转换为整数(使用10为底,但该底可能不相关。)此错误很可能意味着实际位于第0个位置的字符串该行不是可识别的数字(例如,您的devices.txt
格式可能不正确,以某行开头为lounge,lamp,False, ...
而不是数字,或者id字段有时为空(例如,lounge,lamp,...
)。
错误消息ValueError:int()以10为底的无效文字:``''表示以下含义:
您要求Python通过调用int()将对象转换为整数。
解决此问题的一种方法是执行以下操作:将value
转换为字符串,然后使用如下的replace()
方法。
value = value.replace(' ', '')
注意:您可以在''
的第一组中插入任何内容。 这将用第二个''
中的任何内容替换它。 如果要删除第二组,请确保将其保留为空格或字符。
对每个不能转换为整数的单个字符执行此操作。 其中包括:!@#$%^&*()_ + {} []“:;'?> <,。/ | + =-
要找出哪些字符可能无法转换为整数,请执行以下操作:
print(repr(value))
这将显示您的所有角色。 只需对任何无法转换的地方使用replace方法。
希望这可以帮助 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.