零基礎學程式設計033:字串的split拆分與join連線
阿新 • • 發佈:2022-05-03
在《零基礎學程式設計021:獲取股票實時行情資料》這一節裡,我們學了split()函式,可以將一個字串切開。假設有一個歷史行情字串,資訊包括:股票名稱、開盤價、最高價、最低價、收盤價、交易量等,用split() 之後可以方便地取出任何一個價格,例如:v[1]就是開盤價。
hq = "谷歌,843.64,847.24,840.8,845.62,779900"
v = hq.split(',')
print(v)
# 輸出結果:['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']
可以看到print(v)的輸出內容是一個列表list,python將其輸出時,會在前後加上中括號[ ],裡面的每一項內容仍是字串,顯示出來不直觀。如果你想把這些字串再重新拼起來,以前有程式設計基礎的朋友馬上會這樣做:
v = ['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']
hq = ""
for i in v :
hq += str(i) + ","
hq = hq[:-1] #去掉尾部多餘的一個逗號
print(hq)
但實際上應該用 join() 函式,簡潔、直觀、效能好:
v = ['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']
hq = ','.join(v)
print(hq)
這個join()函式與split()函式的功能幾乎正好相反,但初學者在理解','.join()這條語句時感覺會很不習慣,似乎v.join(',')更符合思維習慣。關於這個問題,感興趣的朋友可以讀下面這篇帖子,裡面介紹了這種設計的主要考慮和經過:http://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring
最近正在零基礎學畫畫,嘗試著把這兩個函式的意思畫了下來。
s = 'ab,cd,ef,gh'
t = s.split(',')
s = ','.join(t)
這裡需要注意的是:s是一個字串,而t是4個字串。
還需要特別注意這樣一種用法:
','.join('abcde')
join()函式裡的引數是一個列表list(準確地說,應該是一個可遍歷的物件,這裡先不介紹它),python的字串也是可遍歷的,可以拆為一個個的單個字元,所以結果就是:
'a,b,c,d,e'
我把以前的365行複利資料表再利用join函式寫一遍,你還能看懂嗎?
def fuli(i) : y = round(1.01**i, 2) return "(1+0.01) ^ " + str(i) + " = " + str(y) fuli365 = [fuli(i) for i in range(1,366)] print('n'.join(fuli365))
--- END ---