4種字串格式化

2021-09-26 14:19:28 字數 1718 閱讀 7168

第一種方法:「舊式」字串格式化

通過%操作符進行位置格式化,如下所示:

>>

> number =

20190827

>>

> name =

'lily'

>>

>

"hello %s, your number is %x."

%(name, number)

'hello lily, your number is 134166b.'

還能將別名傳給%操作符,按名稱替換變數,這樣不必確保字串值得傳遞順序與格式化字串中名稱的引用順序一致。

>>

>

"hello %(name)s, your number is %(number)x."

%'hello lily, your number is 134166b.'

第二種方法:「新式」字串格式化

在字串物件上呼叫format()函式,執行簡單的位置格式化。

>>

>

"hello {}, your number is ."

.format

(name, number)

'hello lily, your number is 134166b.'

與第一種方法類似,這種方法也能用別名以任意順序替換變數。

>>

>

"hello , your number is ."

.format(.

.. name=name,..

. number=number)

'hello lily, your number is 134166b.'

第三種方法:字串字面值插值

採用這種方法,可以在字串常量內使用嵌入的python表示式。,如下示例還能內聯算數運算:

>>

> a =

5>>

> b =

10>>

> f'five plus ten is and not .'

'five plus ten is 15 and not 30.'

本質上,格式化字串字面值是python解析器的功能:將f字串轉換成一系列字串常量和表示式,然後合併起來構建最終的字串。

同時,字串字面值也支援str.format()方法所使用的字串格式化語法。

>>

> f'hello , your number is .'

'hello lily, your number is 0x134166b.'

第四種方法:模板字串

先看效果:

>>

>

from string import template

>>

> templ_string =

'hello $name, your number is $number.'

>>

> template(templ_string)

.substitute(..

. name=name,..

. number=

hex(number)

)'hello lily, your number is 0x134166b.'

字串格式化

sprintf snprintf snprintf std stringstream std strstream boost lexical cast boost format cstring format 1 sprintf 使用 sprintf 不安全,輕則破壞資料的準確性,重則程式崩潰。請看下...

格式化字串

通常在使用字串的時候,會對字串進行格式化,然後輸出或呼叫 一般我們使用替換標記對字串進行格式化 string str1 string.format add is 1,2,3 而且在c 中的替換標記可以以任意順序和次數出現在格式化字串中,但替換值是按順序排的,而且替換標記不能超出索引範圍 string...

字串格式化

例如 string s hello map.put target world string res format s,map 有什麼用呢?比如在some.properties中配置模板字串,但是如果用 這種方式,在配置了spring讀取properties注入變數的時候,這個變數就找不到會報錯。這個...