【红色为转载后新增部分】
函数: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