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.pswp.cn/web/10640.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10640.shtml
英文地址,請注明出處:http://en.pswp.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…