如何在 Python 中将字符串转换为浮点或整数

您所在的位置:网站首页 python如何将字符串转为整数 如何在 Python 中将字符串转换为浮点或整数

如何在 Python 中将字符串转换为浮点或整数

2023-03-17 07:08| 来源: 网络整理| 查看: 265

如何在 Python 中将字符串转换为浮点或整数 当前位置:主页 > 学无止境 > 编程语言 > WEB前端编程语言网络算法操作系统数据库 如何在 Python 中将字符串转换为浮点或整数 作者:迹忆客 最近更新:2023/03/01 浏览次数:

本教程文章将介绍如何在 Python 中将字符串转换为浮点数 float() 或整数 int()。

float() 将字符串转换为 float 数字,如果可能的话。

>>> float('111.2222')111.2222>>> float('111.0')111.0>>> float('111')111.0

int() 如果给定的字符串是整数的表示形式,则可以将字符串转换为整数。否则会引发 ValueError。

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

如果给定的字符串是浮点数的表示形式,float 则可以先将其转换为,然后再将其转换为 int。

>>> int(float('111.0'))111

ast.literal_eval(string) 安全地评估包含 Python 表达式的给定字符串。它可以将字符串自动地转换为 float 或 int。

>>> ast.literal_eval('111.2222')111.2222>>> ast.literal_eval('111.0')111.0>>> ast.literal_eval('111')111

如果字符串表示形式中存在逗号 ,,则 float 转换将引发 ValueError 异常。但是逗号是常规的用法,例如在美国或英国等国家/地区用作千位分隔符 111,111.22,或者在大多数欧洲国家/地区用作小数点 111,222。

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

应该使用 locale 模块来设置语言环境信息,然后 locale.atof() 函数可以根据语言环境设置将给定的字符串解析为浮点数。

>>> import locale>>> A = '111,111.222'>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')'en_US.UTF-8'>>> locale.atof(A)111111.222>>> locale.atof('111,111')111111.0

如果给出正确的语言环境设置,则逗号 , 可以正确解释。

还应注意的是,即使给定的字符串表示形式是整数,转换结果也始终是 float 类型。

>>> import locale>>> locale.setlocale(locale.LC_ALL, 'nl_NL')'nl_NL'>>> locale.atof('111,222')111.222>>> locale.atof('111.111,222')111111.222

111,222 可以正确转换为 111.222,111.111,222 也可以正确转换为 111111.222,因为在荷兰等欧洲国家/地区,. 用作千位分隔符。

我们 timeit 用来检查不同方法之间的性能表现。

>>> import timeint>>> timeit.timeit('float(111.2222)', number=1000000)0.14707240000007005>>> timeit.timeit('ast.literal_eval("111.2222")', setup='import ast', number=1000000)4.779956100000163>>> timeit.timeit('locale.atof("111.2222")', setup='import locale; locale.setlocale(locale.LC_ALL, "en_US.UTF-8")', number=1000000)6.092166299999917

ast.literal_eval() 方法比 float 方法慢得多。如果你只需要在 Python 中将字符串转换为 float 或 int,则 ast.literal_eval() 不是首选。ast.literal_eval() 在此应用程序中属于过度设计,因为其主要目标应该是评估包含 Python 表达式的字符串。

locale.atof() 也非常慢,因此仅当在美国或英国的约定字符串中存在逗号时才使用它,或者点 . 表示千位分隔符,而逗号 , 在欧洲国家中表示小数点。换句话说,locale.atof() 如果确实需要,才应使用它。

上一篇:如何在 Python 2 和 Python 3 中将字节转换为字符串

下一篇:如何在 Python 中逐行读取一个文件到列表

相关文章 在 Python 中打印异常

发布时间:2023/03/06 浏览次数:118 分类:编程语言

了解如何在 Python 中打印异常

在 Python 中捕获所有异常

发布时间:2023/03/06 浏览次数:82 分类:编程语言

本教程演示了如何捕获 Python 中的所有异常

在 Python 中创建自定义异常

发布时间:2023/03/06 浏览次数:124 分类:编程语言

这篇文章演示了如何在 Python 中创建自定义异常类。

在 Python 中使用 try...else 块

发布时间:2023/03/06 浏览次数:175 分类:编程语言

这篇文章提到了 Python 中 try-else 块的使用。

在 Python 中没有 except 的 try 语句

发布时间:2023/03/06 浏览次数:100 分类:编程语言

本教程演示了如何在不处理异常的情况下使用 try 和 except。

在 Python 中引发异常

发布时间:2023/03/06 浏览次数:105 分类:编程语言

本教程演示如何在 Python 中引发异常。

在 Python 中处理 NameError 异常

发布时间:2023/03/06 浏览次数:175 分类:编程语言

本教程讨论了 NameError 异常的原因以及我们如何在 Python 中处理它。

在 Python 中追加元素到一个元组

发布时间:2023/03/05 浏览次数:119 分类:编程语言

它演示了如何在 Python 中对一个元组进行追加。

在 Python 中将元组转换为字符串

发布时间:2023/03/05 浏览次数:159 分类:编程语言

本教程演示了如何在 python 中将元组转换为字符串

转载请发邮件至 [email protected] 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3