Python 以10为基数的int()的文本无效:';328.94';(将字节转换为int()时)
这是我的代码:Python 以10为基数的int()的文本无效:';328.94';(将字节转换为int()时),python,python-3.x,serial-port,byte,arduino-uno,Python,Python 3.x,Serial Port,Byte,Arduino Uno,这是我的代码: import serial print('Arduino is setting up') # Setting up the Arduino board arduinoSerialData = serial.Serial('com4', 9600) while True: if arduinoSerialData.inWaiting() > 1: myData = arduinoSerialData.readline() myDat
import serial
print('Arduino is setting up')
# Setting up the Arduino board
arduinoSerialData = serial.Serial('com4', 9600)
while True:
if arduinoSerialData.inWaiting() > 1:
myData = arduinoSerialData.readline()
myData = str(myData)
myData = myData.replace("b'", '')
myData = myData.replace("\\r\\n'", '')
myData1=myData
if myData1.find("a"):
myData1= myData1.replace("a",str(0))
if int(myData1)<100:
print(myData)
导入序列号
打印(‘Arduino正在设置’)
#设立Arduino董事会
arduinoSerialData=serial.serial('com4',9600)
尽管如此:
如果arduinoSerialData.inWaiting()>1:
myData=arduinoSerialData.readline()
myData=str(myData)
myData=myData.replace(“b'”,)
myData=myData.replace(“\\r\\n”“,”)
myData1=myData
如果myData1.find(“a”):
myData1=myData1.replace(“a”,str(0))
如果int(myData1)如果给int()
一个字符串,则它必须是一个整数。如果您有一个非整数,可以先用float()
将其转换,然后使用int()
将该浮点值转换为整数,如下所示:
>>> print(int("328.94")) # Will not work.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '328.94'
>>> print(float("328.94")) # Convert string to float.
328.94
>>> print(int(float("328.94"))) # Convert string to float to int.
328
>>> print(int(float("328.94") + 0.5)) # Same but rounded.
329
>打印(int(“328.94”)#将无法工作。
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“328.94”
>>>打印(浮点(“328.94”)#将字符串转换为浮点。
328.94
>>>打印(int(float(“328.94”))#将字符串转换为float到int。
328
>>>打印(整数(浮点(“328.94”)+0.5))#相同但四舍五入。
329
如果希望将最后一个整数舍入到最接近的整数,而不是截断,则可以选择最后一个。字节到字符串的转换似乎不正确。为什么不试试这个:
1. Bytes to string conversion:
mydata = myData.decode("utf-8")
2. Eliminatinf trailing newline characters:
myData = myData.strip("\r\n")
确保生成的字符串仅包含要转换为int的数字字符。您可以执行以下检查:
if mydata1.isdigit() and int(mydata1) < 100:
<your code>
如果mydata1.isdigit()和int(mydata1)<100:
如果ur字符串包含浮点数,则可以执行以下操作:
if mydata1.replace(".", "").isdigit() and int(float(mydata1)) < 100:
如果mydata1.replace(“.”,“”)。isdigit()和int(float(mydata1))<100:
改用float()
?哇,好吧,这很管用,但有没有合适的方法将其转换为float?我尝试了网上给出的方法,但都不管用。如果你不告诉我们返回数据的格式,你必须检查你使用的硬件/代码的文档,如果你不是自己编写的。如果该值是一个浮点值,并按实际情况以字符串形式返回,那么这是正确的方法。