iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
0
自我挑戰組

從寫程式到脫離菜雞的歷練(以python為主的資處與檔案權限)系列 第 6

[D6] 資料處理:檔案流2

介紹完stdio,接著就進入複雜stdio與檔案間的處理層級~

---

strip 用法

stdio的輸入輸出或方法都是sys套件已經寫好的,那要如何從外加功能讓stdio 可以多一點彈性;且可以外加功能改變他的方法?
strip | 效果 | 指向
------------- | -------------
strip | 移除指定開頭及結尾的字元 | 開頭及結尾
rstrip | 移除右邊指定的字元 | 結尾
lstrip | 移除左邊指定的字元 | 開頭

  • 值得注意的是:刪除指定字元要注意指向是否有掃描到 因為此方法的刪除是依據指標來掃描刪除的
  • 另外:假如沒給任何值就是刪除控制符 ( asciiCode 0x20以下控制碼)

Ex:(玩玩strip)

a = "0987321456aaa9870156423"
b = "\n\n \n\n\n  \r\r\n\r   \r\t\a\a \a\a\t\r"
#
print(a)
print(a.strip("0123456789"))
print(a.strip("123456789"))
print(a.strip("0123456"))
print(a.strip())
print(b.strip())
#
print(a.rstrip("0123456789"))
#
print(a.lstrip("0123456789"))
  • 補充:map() 用法
    如果要從多個陣列或位置擷取資料 , 當然可以用a[x] 方法把需要的資料抓取到指定位置,但有時要做批次處理的話就顯得太”雞肋”了。 所以只要是牽扯批次處理的(讀,寫,改變結構…) 就可用此方法:
list = map("方法" , "目標資料組")
#下面較常用
'object' = list(map("方法" , "目標資料組"))

簡單的例子:

lia = { 1 , 2 , 3 , 'apple' , '[}@#$%'}
print(list(map(str , lia)))

最好用的地方在於..方法可放函數(def) 也可放class(物件導向會在談)

def procs(x,y,z):
    return x+y+z
lista = [1,3,5,7,9]
listb = [2,4,6,8,10]
listc = [100,100,100,100,100]

print(list(map(add,lista,listb,listc)))

好滴 現在可以改變stdio的方法讓他更有彈性
Ex:(stdio檔案內)

import sys
for i in range(0,10):
    l = []
    hi = sys.stdin.readline().strip("\n")
    l.append(hi)
    sys.stdout.write(hi)
print(list(map(str , hi)))
# std的用法需每一步都給它參數 少一個參數就無法執行


上一篇
[D5] 資料處理:檔案流
下一篇
[D7] 資料處理:檔案流(進階stdio)
系列文
從寫程式到脫離菜雞的歷練(以python為主的資處與檔案權限)32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言