python中字符串和数值互相转换的几种方法

为君一笑 提交于 2020-02-17 14:29:51

一 、字符串转化成数字

方法1:(仅限python 2)

   1)string.atof(s) 字符串转化成浮点型

>>import string 
>>string.atof('1.11')
>>1.11


>>string.atof('1')
>>1.0

   2)string.atoi(s[, base]) 字符串转换成整型,其中这里的base是进制基数,假设需要将字符串转化为10进制,则base-10;转化 成2进制,则base=2。

>>import string 
>>string.atoi('12',10)  #转换成10进制
>>12

>>string.atoi('12',8)  #转换成8进制
>>10

>>string.atoi('1')
>>1

>>> string.atoi('1.11',10)  #不能转化成整型的字符串
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\string.py", line 405, in atoi
    return _int(s, base)

 方法2:(python 2 和 3)

   1)float(s) 字符串转化成浮点型

>>> float('12.23')
12.23
>>> float('12')
12.0

    2) int(s) 字符串转化成整型 

>>> int('12')
12

>>> int('12.23')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12.23'

方法3:(python 2 和 3)

ord(char) :char为一个字符,该关键字是指将char转化成对应的ascii值

>>> ord('a')
97

>>> ord('1')
49

>>> ord(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> ord(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected string of length 1, but int found

二 、数字转化成字符串

方法1:格式化字符串

>>> x = '%d' % 322
>>> type(x)
<class 'str'>

>>> x
'322'
>>>

 常用的格式化字符串:

   %d 整数

   %f%F 浮点数

   %e%E 科学计数

   %g%G e 和%f/%E 和%F 的简写

   %% 输出%

 格式化操作符辅助指令

 符号 作用

   * 定义宽度或者小数点精度

   - 用做左对齐

   + 在正数前面显示加号( + )

   <sp> 在正数前面显示空格

   # 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')

   0 显示的数字前面填充‘0'而不是默认的空格

   % '%%'输出一个单一的'%'

   (var) 映射变量(字典参数)

   m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

>>> '%f' % 1234.567890
'1234.567890'

>>> '%.2f' % 1234.567890
'1234.57'

方法2:str(x)

>>> str('12.23')
'12.23'

>>> str(1)
'1'

 方法3:

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回值是当前整数对应的 ASCII 字符。

oct() 函数将一个整数转换成8进制字符串。

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

>>> chr(3)
'\x03'

>>> chr(255)
'ÿ'

>>> chr(100)
'd'
>>> oct(123)
'0o173'

 但是unichr(x)只有python 2有

>>> unichr(100)
u'd'
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!