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
# ------运行结果------

以上内容为个人原创,整理。未经允许禁止转载!!!!!!!

猜你喜欢

转载自blog.csdn.net/zhouz92/article/details/106306102
今日推荐