【紅色為轉載后新增部分】
函數: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