![](/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.