如何将 Python 字符串转换为 int 并转换回字符串
bigegpt 2024-10-10 04:34 17 浏览
如何将 Python 字符串转换为 int 并转换回字符串
6 分钟阅读
将 Python 字符串转换为 int 以及从整数转换为字符串的各种方法。您可能经常需要在日常编程中执行此类操作。因此,您应该了解它们以编写更好的程序。
此外,整数可以用不同的基数表示,所以我们也将在这篇文章中解释这一点。并且碰巧存在转换失败的情况。
顺便说一下,如果您对 Python 数据类型有一些基本知识,这将很有用。
Python 字符串到 int 和 int 到 string 的转换
对于程序员来说,了解不同的转换方法至关重要。当您从外部源(如文件)读取或接收数据时,它可以是数字,但采用字符串格式。或者有时,我们使用字符串以样式化的方式显示。
稍后,在操作或更改数字时,您需要将字符串转换为整数或适当的类型。因此,现在让我们看看如何将 Python 字符串转换为 int 并检查所有 +/-ve 场景。
int() 将 Python 字符串转换为 int
Python 提供了一个标准的整数类(类 'int')来处理数值运算。它带有 int() 构造函数方法,可用于将字符串转换为 int。
让我们在一个例子的帮助下检查一下 int() 函数的实际运行情况:
"""
Python Example:
Desc:
Use Python int() function to convert string to int
"""
# Salary per year in string format
SalaryPerYear = '1000000'
# Test the data type of 'SalaryPerYear' variable
print("Data Type of 'SalaryPerYear': {}".format(type(SalaryPerYear)))
# Let's perform string to int conversion
SalaryPerYear = int(SalaryPerYear)
# Again, test the data type of 'SalaryPerYear' variable
print("Data Type of 'SalaryPerYear': {}".format(type(SalaryPerYear)))
下面是执行上述代码后的结果:
Data Type of 'SalaryPerYear': <class 'str'>
Data Type of 'SalaryPerYear': <class 'int'>
从不同的基数转换整数
整数类型值的默认基数为 10。但是,在某些情况下,字符串可以包含 10 以外的其他基数的数字。
基数或基数是计数系统用来表示数字的不同数字或数字和字母的组合。
如果您想了解更多关于基数的概念,请参考这个 – 数学基数。
在转换这样的数字时,您需要在 int() 函数中指定正确的基数才能成功转换。它将采用以下语法:
# Syntax
int(input_str, base_arg)
基参数的允许范围为 2 到 36。
这里要注意的一点是,结果将始终是以 10 为基数的整数。查看如何在 Python 中连接字符串以及下面的代码,以了解来自不同基础的字符串到整数的转换。
"""
Python Example:
Desc:
Use Python int() function to convert string to int from different bases
"""
# Machine Id in string format
MachineIdBase10 = '10010'
MachineIdBase8 = '23432' # 10010 => base 8 => 23432
MachineIdBase16 = '271A' # 10010 => base 16 => 271A
# Convert machine id from base 10 to 10
MACHINE_ID = int(MachineIdBase10, 10)
print("MachineID '{}' conversion from Base 10: {}".format(MachineIdBase10, MACHINE_ID))
# Convert machine id from base 8 (octal) to 10
MACHINE_ID = int(MachineIdBase8, 8)
print("MachineID '{}' conversion from Base 8: {}".format(MachineIdBase8, MACHINE_ID))
# Convert machine id from base 16 (hexadecimal) to 10
MACHINE_ID = int(MachineIdBase16, 16)
print("MachineID '{}' conversion from Base 16: {}".format(MachineIdBase16, MACHINE_ID))
当您执行给定的代码时,它会转换具有相同数字但基本格式不同的字符串 (MACHINEIdBase)。并且MACHINE_ID的输出值始终以10为基数。
检查转换中的错误/异常
在将字符串转换为 int 时,也可能出现错误或异常 (ValueError)。当值不完全是一个数字时,通常会发生这种情况。
例如,您正在尝试转换包含使用逗号格式化的数字的字符串。或者它存储十六进制值,但您错过了传递 base 参数。
因此,您可能需要处理此类错误并采取一些预防措施。请查看以下示例以了解。
"""
Python Example:
Desc:
Handle string to int conversion error/exception
"""
# Salary variable holds a number formatted using commas
Salary = '1,000,000'
try:
print("Test Case: 1\n===========\n")
numSalary = int(Salary)
except ValueError as ex:
print(" Exception: \n ", ex)
newSalary = Salary.replace(',', '')
print(" Action: ")
numSalary = int(newSalary)
print(" Salary (Int) after converting from String: {}".format(numSalary))
# MachineId
MachineId = 'F4240' # 1,000,000 => base 16 => F4240
try:
print("\nTest Case: 2\n===========\n")
MACHINE_ID = int(MachineId)
except ValueError as ex:
print(" Exception: \n ", ex)
print(" Action: ")
MACHINE_ID = int(MachineId, 16)
print(" MACHINE_ID (Int) after converting from String: {}".format(MACHINE_ID))
该示例包括两个测试用例。当字符串包含格式化数字时,第一个显示错误。第二个由于基值不正确而失败。运行代码后,将得到以下结果:
Python Int to String
还有另一个名为 Str() 的 Python 标准库函数。它只是取一个数字值并将其转换为字符串。
但是,Python 2.7 也有一个名为 Unicode() 的函数,用于生成 Unicode 字符串。但它在 Python 3 或更高版本中不可用。
查看以下示例:
"""
Python Example:
Desc:
Use Python str() function to convert int to string
"""
# Numeric Machine Id in Hexadecimal Format
MachineIdBase16 = 0x271A # 0x271A ==> 10010
# Convert numeric Machine Id to Integer
MACHINE_ID = str(MachineIdBase16)
print("\nMachineID ({}) conversion from Base 16: {}\n".format(hex(MachineIdBase16), MACHINE_ID))
print("MachineIdBase16 type: {} => Post CONVERT => MACHINE_ID type: {}\n".format(type(MachineIdBase16), type(MACHINE_ID)))
下面是执行上述代码后的输出片段:
将 Python int 转换为字符串输出
主要说明
- 类型转换是将对象从一种类型转换为另一种类型的过程。
- Python 会自动执行称为隐式类型转换的转换。
- Python 确保在类型转换中不会发生数据丢失。
- 如果调用函数来转换类型,则该过程称为显式类型转换。
- 显式强制转换可能会导致数据丢失,因为用户会强制执行此操作。
相关推荐
- Go语言泛型-泛型约束与实践(go1.7泛型)
-
来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...
- golang总结(golang实战教程)
-
基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...
- Go 官宣:新版 Protobuf API(go pro版本)
-
原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...
- Golang开发的一些注意事项(一)(golang入门项目)
-
1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...
- golang 托盘菜单应用及打开系统默认浏览器
-
之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...
- golang标准库每日一库之 io/ioutil
-
一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...
- 文件类型更改器——GoLang 中的 CLI 工具
-
我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...
- Go (Golang) 中的 Channels 简介(golang channel长度和容量)
-
这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...
- Golang引入泛型:Go将Interface「」替换为“Any”
-
现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...
- 一文带你看懂Golang最新特性(golang2.0特性)
-
作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...
- Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移
-
以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...
- Golang使用grpc详解(golang gcc)
-
gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...
- Etcd服务注册与发现封装实现--golang
-
服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...
- Golang:将日志以Json格式输出到Kafka
-
在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...
- 如何从 PHP 过渡到 Golang?(php转golang)
-
我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)