摆脱&引用;从python中的切片

摆脱&引用;从python中的切片,python,string,int,hex,Python,String,Int,Hex,我正在使用下面的程序将两个十六进制字符串转换为一个整数,格式为hex,hex# 节目: a=raw_input("Serial Command: ") if a=="q": break ser.write(a) time.sleep(1) b=ser.readline() print "b=",b azt=b[:8] alt=b[9:17] print "azt=",azt,"|","alt=",alt pr

我正在使用下面的程序将两个十六进制字符串转换为一个整数,格式为hex,hex#

节目:

a=raw_input("Serial Command: ")
    if a=="q":
        break
    ser.write(a)
    time.sleep(1)
    b=ser.readline()
    print "b=",b
    azt=b[:8]
    alt=b[9:17]
    print "azt=",azt,"|","alt=",alt
    print int(azt)," ",int(alt)
输出和跟踪:

Serial Command: z
b= 07A49B00,0006EF00#
azt= 07A49B00 | alt= 0006EF00
Traceback (most recent call last):
  File "C:\Users\Jeff\Desktop\celestronserial.py", line 58, in <module>
    print int(azt)
ValueError: invalid literal for int() with base 10: '07A49B00'
串行命令:z
b=07A49B000006EF00#
azt=07A49B00 | alt=0006EF00
回溯(最近一次呼叫最后一次):
文件“C:\Users\Jeff\Desktop\celestronserial.py”,第58行,在
打印整型(azt)
ValueError:基数为10的int()的文本无效:“07A49B00”

int(azt/alt)函数返回一个错误,表示它不是基数10。从“alt/azt=”行的输出中可以看到,罪魁祸首是一些空白。有人能告诉我为什么要拆分这个空白表单吗?我怎样才能摆脱它?我试图替换(“,”)但没有用

该空间仅由
print
插入

In [1]: print "hello","world"
hello world
In [2]: print "hello" + "world"
helloworld
您的变量未被编辑。要查看变量中的实际内容,请不要在
print
中使用逗号

In [1]: print "hello","world"
hello world
In [2]: print "hello" + "world"
helloworld
对于整数转换,请务必列出基本值:

int(azt, base=16)

您认为需要消除的空格来自print语句,不属于数据的一部分。您实际需要的是
int(azt,16)
。如果基数不是10,则需要提供一个基数。

您对空格的假设可能不正确,因为
print
语句会在它打印的参数之间自动引入一个空格

要获得所需的字符串,请使用

s = "07A49B00,0006EF00#"
azt, alt = b[:-1].split(",")
[:-1]
省略了尾随的
#
,然后
.split()
调用返回逗号周围的字符串列表。应该只有两个,所以我使用解包分配将值放入单个变量中


真正的问题是你的
int()
调用,它应该指定一个16进制的基数来实现必要的十六进制转换(例如,
int(azt,16)
)。

我假设引用的代码来自循环内部,因为循环外部的
break
是一个语法错误。究竟是什么让你认为罪魁祸首。。。是一些空白。“?您正在尝试转换表示(大概是)的字符串base-16数字,但作为一个表示base-10数字的字符串,这是行不通的。请阅读。谢谢,我觉得很愚蠢,我两天前凌晨1点遇到了这个问题,并找到了答案。我不知道为什么这次我没有抓住它。我想它会告诉你,你并不总是在早上最敏锐。