原文链接:http://www.juzicode.com/python-tutorial-string-to-others/
在《Python基础教程4—格式化字符串》中讲的是怎么将其他数据类型转换为字符串,本文内容讲怎么将字符串转换为其他数据类型。
1 转换为int
1.1 int()
源码 | print(‘—–欢迎来到www.juzicode.com’) print(‘—–公众号: juzicode/桔子code\n’) print(‘字符串转换为int型’) s=’100′ a=int(s,10) print(s,’10进制方法1:’,a) a=int(s,0) print(s,’10进制方法2:’,a) a=int(s) print(s,’10进制方法3:’,a) a=int(s,2) print(s,’2进制:’,a) a=int(s,8) print(s,’8进制:’,a) a=int(s,16) print(s,’16进制:’,a) a=int(s,17) print(s,’17进制:’,a) a=int(s,32) print(s,’32进制:’,a) |
结果 | —–欢迎来到www.juzicode.com —–公众号: juzicode/桔子code 字符串转换为int型 100 10进制方法1: 100 100 10进制方法2: 100 100 10进制方法3: 100 100 2进制: 4 100 8进制: 64 100 16进制: 256 100 17进制: 289 100 32进制: 1024 |
如果输入的是非数字型的字符串,在进行10进制转换时就会抛异常;转换为8进制时,输入的字符串数字必须是0-7,转换为2进制时必须是0和1,16进制转换时,必须是0-9,a-f或者A-F。就是说要转换的字符串必须要满足进制的表示要求。
>>> int(‘1af’,10) Traceback (most recent call last): File “<stdin>”, line 1, in <module> ValueError: invalid literal for int() with base 10: ‘1af’,#10进制必须是0-9的字符 >>> >>> int(‘012’,2) Traceback (most recent call last): File “<stdin>”, line 1, in <module> ValueError: invalid literal for int() with base 2: ‘012’ #2进制必须是0,1字符 |
另外2进制数值前也可以加“0b”或者“0B”,8进制数值前也可以加“0o”或者“0O”(字母O),16进制数值前可以加“0x”或者“0X”:
源码 | print(‘0B01转换为2进制:’,int(‘0B01’,2)) print(‘0O71转换为8进制:’,int(‘0O71’,8)) print(‘0X33转换为16进制:’,int(‘0X33’,16)) |
结果 | 0B01转换为2进制: 10 O71转换为8进制: 57 0X33转换为16进制: 51 |
前面提到int()转换函数中的进制最大可以是36,为什么会是36进制,应该用什么字符表示最大的35?因为英文字母26个加上10个阿拉伯数字正好是36个字符,所以在表示36进制时,要转换的字符串可以是0-1,a-z,A-Z这些数字组成。类似的,如果表示35进制,则只能取0-9,a-y,A-Y这些字符串组成的字符串。
>>> int(‘za3’,36) 45723 >>> int(‘za3’,35) Traceback (most recent call last): File “<stdin>”, line 1, in <module> ValueError: invalid literal for int() with base 35: ‘za3’ |
1.2 ord()函数
ord()函数则是chr()的逆操作函数,可以将单个字符转换为int数据。
>>> ord('d')
100
>>> chr(100)
'd'
2 转换为float
字符串转换为float使用float()函数,如果输入的浮点数格式不正确,将会抛异常:
源码 | s=’3.14159265′ a=float(s) print(s,’转换为浮点数:’,a) s=’5.ab’ a=float(s) print(s,’转换为浮点数:’,a) |
结果 | 字符串转换为float型3.14159265 转换为浮点数: 3.14159265 Traceback (most recent call last): File “E:\juzicode\py3study\04b-字符串转换为其他\转换为float.py”, line 18, in <module> a=float(s) ValueError: could not convert string to float: ‘5.ab’ #提示ValueError |
示例代码:https://github.com/juzicode00/py3study/tree/master/04b-字符串转换为其他