Python中的join()函数的用法及列表推导式
【红色为转载后新增部分】
函数:string.join()
Python中有join()和os.path.join()两个函数,具体作用如下:
join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join():将多个路径组合后返回
一、函数说明
1、join()函数
语法:'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2、os.path.join()函数
语法:os.path.join(path1[,path2[,......]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
>>> os.path.join('d',r'c:\a','b','c')
'c:\\a\\b\\c'
import os BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DATA_PATH = os.path.join(BASE_PATH,'data') print(BASE_PATH) print(DATA_PATH)
G:\pytest
G:\pytest\data
二、实例
1.对序列进行操作(以 '.'为分隔符)
seq = ['hello','good','boy','doiido']
print('.'.join(seq))
hello.good.boy.doiido
2.对元组进行操作(以 ':'为分隔符)
seq = ('hello','good','boy','doiido')
print(':'.join(seq))
hello:good:boy:doiido
3.对字典进行操作
seq = {'hello':1,'good':2,'boy':3,'doiido':4}
print(':'.join(seq))
doiido:boy:hello:good
4.合并目录
import os
print(os.path.join('/hello/','good/boy/','doiido'))
/hello/good/boy/doiido
5.对字符串进行操作, (以 '-'为分隔符)
seq = 'ABC'
print('-'.join(seq))
A-B-C
三.Json字典转为SQL语句
#表名polls_questions
table_name = "polls_questions"
#需要插入的Json数据
data={'id': 1, 'question_text': 'you buy pro6?', 'pub_date':'2016-07-23 09:58:56.000000'}
#对每一个值加单引号
for key in data:
data[key] = "'" + str(data[key]) + "'"
【备注】:对于值为字符串的处理,先获取字符串内容,获取出来是没有引号的,然后转为str类型
print(data['question_text'])
you buy pro6?
print(str(data['question_text']))
you buy pro6?
print("'"+str(data['question_text'])+"'")
'you buy pro6?'
#利用join()函数把id、question_text、pub_date合并在一起(id,question_text,pub_date)
key = ','.join(data.keys())
#利用join()函数把值合并在一起('1','you buy pro6?','2016-07-23 09:58:56.000000')
value = ','.join(data.values())
#INSERT INTO polls_questions (id,pub_date,question_text) VALUES ('1','2016-07-23 09:58:56.000000','you buy pro6?')
real_sql = "INSERT INTO " + table_name + " (" + key + ") VALUES (" + value + ")"
四、列表推导式
实现相同的功能,代码更加简洁。
列表推导式写9*9乘法表
print('\n'.join([' '.join(['%s*%s=%s'%(x,y,x*y) for x in range(1,y+1)]) for y in range(1,10)]))
非列表推导式写法
for i in range(1,10): for j in range(1, i+1): print(str(j)+'*'+str(i)+'='+str(j*i)+' ', end='') # end=''表示输出不换行 print('\n', end='')
参考:http://www.cnblogs.com/hjhsysu/p/5700962.html
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!