TypeError: can only concatenate str (not “int“) to str

TypeError: can only concatenate str (not "int") to str


a= '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
print('str_len = len(str_text) :'+ len(a))

试图打印出字符串 a 的长度,但是在 Python 中拼接字符串和整数需要使用字符串格式化。直接使用加号 + 来连接字符串和整数会导致类型错误,因为 Python 不能直接拼接字符串和整数类型

可以使用字符串格式化来修正这个问题。以下是一个修正后的示例:

a = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'  
print('str_len = len(str_text) :' + str(len(a)))

在这个修正后的代码中,str(len(a)) 将整数类型的长度转换为字符串类型,这样就可以使用加号 + 将其与另一个字符串拼接起来了。


另外:

可以使用字符串格式化的更高级方法,例如 format 函数或 f-string(如果您使用的是 Python 3.6+):

# 使用 format 函数  
print('str_len = len(a) : {}'.format(len(a)))  # 使用 f-string(Python 3.6+)  
print(f'str_len = len(a) : {len(a)}')

这些方法都可以让您更灵活地插入变量值到字符串中。

.format() 

.format() 是 Python 中的一个字符串方法,用于格式化字符串。通过这个方法,你可以将值插入到字符串中的占位符位置。.format() 提供了一种灵活的方式来构建包含变量的字符串,而不需要使用字符串拼接。

.format() 方法的基本语法如下:

"{}".format(value)

在上面的语法中,{} 是一个占位符,它会被 .format() 方法中的参数替换。

以下是一些使用 .format() 方法的例子:

# 使用位置参数  
template = "Hello, {}!"  
message = template.format("World")  
print(message)  # 输出: Hello, World!  # 使用多个占位符  
template = "My name is {} and I am {} years old."  
message = template.format("Alice", 30)  
print(message)  # 输出: My name is Alice and I am 30 years old.  # 使用关键字参数  
template = "My name is {name} and I am {age} years old."  
message = template.format(name="Bob", age=25)  
print(message)  # 输出: My name is Bob and I am 25 years old.  # 使用索引来指定参数的位置  
template = "{1} is {0} years old."  
message = template.format(35, "Charlie")  
print(message)  # 输出: Charlie is 35 years old.  # 格式化数字  
x = 3.1415926  
template = "The value of pi is approximately {:.3f}."  
message = template.format(x)  
print(message)  # 输出: The value of pi is approximately 3.142.

在上面的例子中,我们展示了如何使用 .format() 方法来插入变量、格式化多个变量、使用关键字参数、通过索引指定参数位置,以及格式化数字(在这个例子中,我们将 pi 的值格式化为保留三位小数的浮点数)。

.format() 方法还支持更复杂的格式化选项,如对齐、填充、精度控制等,这使得它在构建复杂字符串时非常有用。从 Python 3.6 开始,还引入了 f-string,它提供了一种更简洁、更直观的方式来格式化字符串。不过,.format() 方法在早期的 Python 版本中仍然是一个重要的工具,并且在某些情况下可能比 f-string 更灵活。

f'str_len = len(a) : {len(a)}'

在 Python 3.6 及以上版本中,f-string(格式化字符串字面量)提供了一种非常方便的方式来插入和格式化字符串中的值。在您给出的代码示例中:

print(f'str_len = len(a) : {len(a)}')

这里使用了 f-string,其中 f 前缀表示这是一个格式化字符串。在大括号 {} 内,您可以直接写入 Python 表达式,这些表达式在字符串被求值时会被执行,并且其结果会被插入到字符串中的相应位置。

在这个例子中,{len(a)} 是一个表达式,它会计算变量 a 的长度,并将结果插入到 f-string 中。因此,如果 a 是之前定义的字符串:

a = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'

那么执行上述 print 语句会输出类似于以下内容(取决于字符串 a 的实际长度):

str_len = len(a) : 28

这里的数字 28 表示字符串 a 的字符数(包括标点符号和空格)。请注意,这个数字可能会因为字符串 a 的内容不同而变化。

f-string 提供了非常灵活的字符串格式化方式,允许您在字符串中直接嵌入表达式,无需使用 .format() 方法或老式的 % 格式化操作符。这使得代码更加简洁易读。

中文标点符号占2个len长度吗?

在Python中,字符串的长度是通过计算其包含的Unicode字符数来确定的,而不是根据字符的显示宽度。对于中文标点符号,它们通常被编码为一个Unicode字符,因此在计算字符串长度时,每个中文标点也只占一个长度单位。

举个例子,如果我们有一个包含中文逗号的字符串:

s = ","  
print(len(s))  # 输出将会是 1,而不是 2

尽管在显示上,中文标点可能比拉丁字母或数字更宽,但在Unicode字符串的长度计算中,每个Unicode码点(无论是中文、标点、拉丁字母等)都计为一个单位。

因此,中文标点符号并不占2个len长度,而是和其他Unicode字符一样,只占1个len长度。如果你在处理文本时需要考虑字符的显示宽度,那么可能需要使用更复杂的逻辑来确定每个字符实际占用的空间,这通常涉及到字体渲染和排版的知识,而不是简单地通过len函数来计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/10640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】spring aop实现接口参数变更前后对比和日志记录

目录 一、前言 二、spring aop概述 2.1 什么是spring aop 2.2 spring aop特点 2.3 spring aop应用场景 三、spring aop处理通用日志场景 3.1 系统日志类型 3.2 微服务场景下通用日志记录解决方案 3.2.1 手动记录 3.2.2 异步队列es 3.2.3 使用过滤器或拦截器 3.2.4 使…

triton编译学习

一 流程 Triton-MLIR: 从DSL到PTX - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/671434808Superjomns blog | OpenAI/Triton MLIR 迁移工作简介https://superjom

基于STM32单片机的环境监测系统设计与实现

基于STM32单片机的环境监测系统设计与实现 摘要 随着环境污染和室内空气质量问题的日益严重,环境监测系统的应用变得尤为重要。本文设计并实现了一种基于STM32单片机的环境监测系统,该系统能够实时监测并显示室内环境的温湿度、甲醛浓度以及二氧化碳浓…

C语言题目:A+B for Input-Output Practice

题目描述 Your task is to calculate the sum of some integers 输入格式 Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line 输出格式 For each group of inpu…

Sass详解

Sass(Syntactically Awesome Stylesheets)是一种CSS预处理器,它允许你使用变量、嵌套规则、混入(Mixin)、继承等功能来编写CSS,从而使CSS代码更加简洁、易于维护和扩展。下面是Sass的详细解释: …

【docker】容器优化:一行命令换源

原理: 根据清华源提供的Ubuntu 软件仓库进行sources.list替换 ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 1、换源 echo "">/etc/apt/sources.list \&& echo "# 默认注释了源码镜像以提高 apt …

新iPadPro是怎样成为苹果史上最薄产品的|Meta发布AI广告工具全家桶| “碾碎一切”,苹果新广告片引争议|生成式AI,苹果倾巢出动

Remini走红背后:AI生图会是第一个超级应用吗?新iPadPro是怎样成为苹果史上最薄产品的生成式AI,苹果倾巢出动Meta发布AI广告工具全家桶,图像文本一键生成解放打工人苹果新iPadPro出货量或达500万台,成中尺寸OLED发展关键…

8、QT——QLabel使用小记2

前言:记录开发过程中QLabel的使用,持续更新ing... 开发平台:Win10 64位 开发环境:Qt Creator 13.0.0 构建环境:Qt 5.15.2 MSVC2019 64位 一、基本属性 技巧:对于Qlabel这类控件的属性有一些共同的特点&am…

QToolButton的特殊使用

QToolButton的特殊使用 介绍通过QSS取消点击时的凹陷效果点击时的凹陷效果通过QSS取消点击时的凹陷效果 介绍 该篇文章记录QToolButton使用过程中的特殊用法。 通过QSS取消点击时的凹陷效果 点击时的凹陷效果 通过QSS取消点击时的凹陷效果 #include <QToolButton> #i…

Dockerfile中的CMD和ENTRYPOINT

Shell格式和Exec格式 在Dockerfile中&#xff0c;RUN、CMD和ENTRYPOINT指令都可以使用两种格式&#xff1a;Shell格式和Exec格式。 exec 格式&#xff1a;INSTRUCTION ["executable","param1","param2"] shell 格式&#xff1a; INSTRUCTION c…

【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…

ios 开发如何给项目安装第三方库,以websocket库 SocketRocket 为例

1.brew 安装 cococapods $ brew install cocoapods 2、找到xcode项目 的根目录&#xff0c;如图&#xff0c;在根目录下创建Podfile 文件 3、在Podfile文件中写入 platform :ios, 13.0 use_frameworks! target chat_app do pod SocketRocket end project ../chat_app.x…

Python实战开发及案例分析(18)—— 逻辑回归

逻辑回归是一种广泛用于分类任务的统计模型&#xff0c;尤其是用于二分类问题。在逻辑回归中&#xff0c;我们预测的是观测值属于某个类别的概率&#xff0c;这通过逻辑函数&#xff08;或称sigmoid函数&#xff09;来实现&#xff0c;该函数能将任意值压缩到0和1之间。 逻辑回…

Leetcode 572:另一颗树的子树

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的…

【linux】详解linux基本指令

目录 cat more less head tail 时间 cal find grep zip/unzip tar bc uname –r 关机 小编一共写了两篇linux基本指令&#xff0c;这两篇涵盖了大部分初学者的必备指令&#xff0c;这是第二篇&#xff0c;第一篇详见http://t.csdnimg.cn/HRlVt cat 适合查看小文…

网站localhost和127.0.0.1可以访问,本地ip不可访问解决方案

部署了一个网站, 使用localhost和127.0.0.1加端口号可以访问, 但是使用本机的ip地址加端口号却不行. 原因可能有多种. 可能的原因: 1 首先要确认是否localhost对应的端口是通的(直接网址访问), 以及你无法访问的那个本机ip是否正确(使用ping测试)&#xff1b; 2 检查本机的防火…

从头理解transformer,注意力机制(下)

交叉注意力 交叉注意力里面q和KV生成的数据不一样 自注意力机制就是闷头自学 解码器里面的每一层都会拿着编码器结果进行参考&#xff0c;然后比较相互之间的差异。每做一次注意力计算都需要校准一次 编码器和解码器是可以并行进行训练的 训练过程 好久不见输入到编码器&…

docker部署springboot+Vue项目

项目介绍&#xff1a;后台springboot项目&#xff0c;该项目环境mysql、redis 。前台Vue&#xff1a;使用nginx反向代理 方法一&#xff1a;docker run 手动逐个启动容器 1.docker配置nginx代理 将vue项目打包上传到服务器上。创建文件夹存储数据卷&#xff0c;html存放打包…

计算机网络实验1:交换机基本配置管理

实验目的和要求 安装Packer Tracer&#xff0c;了解Packer Tracer的基本操作掌握交换机基本命令集实验项目内容 认识Packet Tracer软件 交换机的基本配置与管理 交换机的端口配置与管理 交换机的端口聚合配置 交换机划分Vlan配置 实验环境 硬件&#xff1a;PC机&#x…

Redisson分布式锁原理

Redisson是基于Redis实现的客户端库&#xff0c;提供了多种Java并发API映射到Redis中&#xff0c;也实现了各种分布式服务&#xff0c;其中就有各种分布式锁的实现。 Redisson锁弥补了SETNX锁的的局限性&#xff0c;实现了可重入、可重试和超时续约的功能。 可重入&#xff1a…