一文掌握在 Python 中将字符串转换为浮点数或整数

liftword3个月前 (02-14)技术文章25

本教程中将介绍如何在 Python 中使用内置float()、int()函数、literal_eval()函数等,将字符串转换为浮点数 float 或整数 int。

在 Python 中将字符串转换为浮点数

Python 的内置函数 float(),可以将浮点型和整数型的字符串转换为浮点数。但是不能转换包含字母等非数值型字符的字符串。

>>> float("123.4")
123.4
>>> float("123.0")
123.0
>>> float("123")
123.0
>>> float("a123")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: could not convert string to float: 'a123'
>>> float("#123")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: could not convert string to float: '#123'

在 Python 中将字符串转换为整数

Python 的内置函数 int(),可以将整数型的字符串转换为整数,不能将浮点数型的字符串转换为整数,不能转换包含字母等非数值型字符的字符串。

>>> int("123")
123
>>> int("123.4")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '123.4'
>>> int("123.0")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '123.0'

可以将浮点数型字符串转换浮点数后,使用 int()将浮点数转换为整数。

>>> int(float("123.4"))
123

使用 literal_eval() 方法转换字符串

ast模块中的 literal_eval 方法可以把数值型的字符串转换为浮点数或整数。

>>> import ast
>>> ast.literal_eval("123.4")
123.4
>>> ast.literal_eval("123.0")
123.0
>>> ast.literal_eval("123")
123
>>> ast.literal_eval("a123.4")
Traceback (most recent call last):
  File "", line 1, in 
  File "D:\Backup\Desktop\thonny\lib\ast.py", line 46, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "", line 1
    a123.4
         ^
SyntaxError: unexpected EOF while parsing

使用 atof() 方法转换包含千位分隔符的字符串

如果字符串中存在逗号,则转换将引发异常。但是逗号通常用作千位分隔符。

>>> float("123,456.7")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: could not convert string to float: '123,456.7'
>>> float("123,456")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: could not convert string to float: '123,456'

locale 模块可以用于设置设置区域信息,atof() 函数可以根据区域设置将给定的字符串转换为浮点数。

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atof("123,456.7")
123456.7

?

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

?

相关文章

编写程序随机产生30个1-100之间的随机整数,按5行6列的格式输出

大家好,我是皮皮。一、前言前几天在某乎上看到了一个粉丝提问,编写程序,随机产生30个1-100之间的随机整数并存入5行6列的二维列表中,按5行6列的格式输出?这里拿出来跟大家一起分享下。二、实现过程后...

Python ‘bufferobject.c’整数溢出漏洞

受影响系统:Python python不受影响系统:Python python ˂ 2.7.8描述:BUGTRAQ ID: 70089Python是一种面向对象、直译式计算机程序设计语言。Python...

python编程:判断一个正整数是奇数还是偶数

#判定一个数为奇数还是偶数#if条件判定number = eval (input("请任意输入一个正整数:")) #eval 执行一个字符串表达式,并且返回一个值if number %2 == 0:...

「Python条件结构」判断是否能同时被3、5、7整除

功能要求编写一个控制台应用重新,从键盘中输入一个正整数N,判断它是否能同时被3、5、7整除,并输入以下信息之一:如果能同时被3、5、7整除,则显示“能同时被3、5、7整除”;如果能被其中两个数整数,则...

Python基础:迭代整数序列不能只知道range,原来还有这2种!

作为Python基础,迭代过程使用整数序列的频率那不是一般的高啊,新手接触for循环,range函数永远不会缺席。今天,钢铁老豆就给大家介绍一下range函数和它类似的API小伙伴们~ 学完这篇文章,...

18、零基础Python到全栈-小整数池的概念

前面我们说了,只要是赋值操作,产生新的值的时候,都会申请一块内存空间。只要申请了新的内存空间,他的内存地址就会不一样,id也会不一样。现在我定义a=10,b=10,按照我们前面分析的,这两串代码一运行...