Python 幾種常用的字符串拼接,格式化,format方法

簡介

字符串是Python中核心類型之一,也是編程過程中最常使用到的對象之一。有時,我們使用字符串時會經常用到字符串的拼接。如構造文件路徑,網絡通訊傳輸的字符串,數據庫SQL操作時字符串的操作。以下介紹幾種常用的字符串拼接方法:

直接拼接

最簡單的字符串拼接方法有以下兩種:
方法一:

str_a = 'hello' 'word'

方法二:用 +

str_b = 'hello' + 'word'

格式化方法

當需拼接的字符串比較多時,用直接拼接的方式就比較繁瑣。而且,當有時字符串需要與變量進行拼接時,用直接拼接的方法就難以做到。就可用%s或者字典格式化的方法。常用的方法有以下幾種:

%s 拼接單個

str_c = 'hello %s'
print(str_c % 'word')
# ------運行結果------
# hello word
# ------運行結果------

%s 拼接多個

注意: 傳入參數數量需和字符串中%s數量一致,用%s時傳入的可爲其他形式的類型

str_d = 'method?name:%s,age:%s,hobby:%s.'
print(str_d % ('小明', 18, '編程'))
# ------運行結果------
# method?name:小明,age:18,hobby:編程.
# ------運行結果------

%f 方法拼接

%f 用來格式化十進制浮點數

float_a = '我還有%f元錢' % 12.5
print(float_a)
# ------運行結果------
# 我還有12.500000元錢
# ------運行結果------

float_b = '我還有%.2f元錢' % 12.5
print(float_b)
# ------運行結果------
# 我還有12.500000元錢
# ------運行結果------

基於字典的格式化操作

如寫SQL語句時可以用%s,也可以用字典格式化操作,傳入參數時會更加明確。

ql_a = "SELECT ID FROM TABLE_1 WHERE NAME = %(name)s AND AGE = %(age)s "
print(sql_a % {'name': '小明', 'age': '18'})
# ------運行結果------
# SELECT ID FROM TABLE_1 WHERE NAME = 小明 AND AGE = 18
# ------運行結果------

語法可總結爲:

"string %(key)s " % {key: value}

字典格式化與vars()內置函數

vars()內置函數可將在其被調用範圍存在的變量轉化爲字典。
注意: 用此方法時需注意變量的作用域

def vars_test():
    name = '小明'
    age = 18
    sql_b = "SELECT ID FROM TABLE_2 WHERE NAME = %(name)s AND AGE = %(age)s "
    print(sql_b % vars())

vars_test()
# ------運行結果------
# SELECT ID FROM TABLE_1 WHERE NAME = 小明 AND AGE = 18
# ------運行結果------

字符串format方法

Python字符串對象有內置的format方法,用在需要拼接字符串時也非常方便。主要的用法有:

方法一:

類似函數位置傳參,用位置 0 1 2來定位需拼接的位置:

sql_c = "SELECT ID FROM TABLE_3 WHERE NAME = {0} AND AGE = {1} "
print(sql_c.format('小明',18))
# ------運行結果------
# SELECT ID FROM TABLE_3 WHERE NAME = 小明 AND AGE = 18
# ------運行結果------

方法二:

類似函數的指定傳參:

sql_d = "SELECT ID FROM TABLE_4 WHERE NAME ={name} AND AGE = {age} "
print(sql_d.format(name = '小明',age = '18'))
# ------運行結果------
# SELECT ID FROM TABLE_4 WHERE NAME =小明 AND AGE = 18
# ------運行結果------

以上內容爲個人原創,整理。未經允許禁止轉載!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章