迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何在 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 "<pyshell#43>", line 1, in <module>
    int('111.0')
ValueError: invalid literal for int() with base 10: '111.0'
>>> int('111.22222')
Traceback (most recent call last):
  File "<pyshell#45>", line 1, in <module>
    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 表达式的给定字符串。它可以将字符串自动地转换为 floatint

>>> 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 "<pyshell#54>", line 1, in <module>
    float('111,111.22')
ValueError: could not convert string to float: '111,111.22'
>>> float('111,111')
Traceback (most recent call last):
  File "<pyshell#55>", line 1, in <module>
    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.222111.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 中将字符串转换为 floatint,则 ast.literal_eval() 不是首选。ast.literal_eval() 在此应用程序中属于过度设计,因为其主要目标应该是评估包含 Python 表达式的字符串。

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中将整数转换为罗马数字

发布时间:2023/04/26 浏览次数:87 分类:Python

本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。

在 Python 中将罗马数字转换为整数

发布时间:2023/04/26 浏览次数:144 分类:Python

本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。

在 Python 中读取 gzip 文件

发布时间:2023/04/26 浏览次数:70 分类:Python

本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。

在 Python 中锁定文件

发布时间:2023/04/26 浏览次数:141 分类:Python

本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等

在 Python 中将 PDF 转换为文本

发布时间:2023/04/26 浏览次数:196 分类:Python

在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。

在 Python 中创建临时文件

发布时间:2023/04/26 浏览次数:53 分类:Python

本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。

在 Python 中读写 Parquet 文件

发布时间:2023/04/26 浏览次数:150 分类:Python

本文介绍了使用 pyarrow 和 fastparquet 两种接口在 Python 中读写 parquet 文件。 为阅读表格和多列和单列等子部分提供了相关的编码示例。

在 Python 中更改文件权限

发布时间:2023/04/26 浏览次数:193 分类:Python

通常,大多数开发人员使用文件权限的常用方法是使用命令行命令或脚本。 但是,可以使用特定的内置库及其方法在 Python 中更改文件权限。本文将讨论如何在 Python 中更改文件权限。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便