不間斷 Python 挑戰 Day 28 - 處理CSV文件

閱讀時間約 46 分鐘
CSV全名為Comma-Separated Values,中文稱為逗號分隔值,也可稱為字元分隔值,因為分隔字元可以不是逗號。它以純文字的形式儲存表格資料,同一列的資料以逗號或其它符號分隔成不同欄位,每一列的資料間以換行符號分隔。網路上很多資料的格式都是以CSV檔案呈現,例如交通部中央氣象局觀測資料查詢系統、或是台灣證券交易所的上市股票交易資訊等。這篇文章會說明如何以Python內建的csv模組來處理CSV檔案。

開啟CSV檔案

台灣證券交易所的上市個股日成交資訊為例,進入台灣證券交易所網站後,點選"交易資訊"中的"個股日成交資訊",進入查詢畫面。
台灣證券交易所
假設我們想要查詢"元大台灣50"在二月份的日成交資訊,可以在股票代碼欄位輸入"元大台灣50"的股票代碼"0050",按下查詢後便可在網頁上顯示出股票的開、高、低、收等資訊,並可點下"CSV下載"的連結,將該表格的CSV檔案下載下來。
個股日成交資訊
111年2月元大台灣50日成交資訊
以記事本開啟下載的檔案,可以看到這個CSV檔案的原始格式。
使用記事本開啟CSV檔
以下是使用Excel開啟檔案的結果。
使用Excel開啟CSV檔

讀取CSV檔案

如同在上一節開啟純文字文件的方式,CSV檔案也適用同樣的方式開啟,搭配with關鍵字,使用open()函數開啟CSV檔案後,可用read()函數將檔案內容讀出來,或是使用readlines()函數將檔案內容存成串列。
with open("STOCK_DAY_0050_202202.csv") as csv_read_file:
  csv_read_data = csv_read_file.readlines()
  print(csv_read_data)
執行結果如下:
['"111年02月 0050 元大台灣50       各日成交資訊"\n', '"日期","成交股數","成交金額","開盤價","最高價","最低價","收盤價","漲跌價差","成交筆數",\n', '"111/02/07","25,312,461","3,593,629,562","142.60","142.80","141.20","142.30","+0.75","27,821",\n', '"111/02/08","11,521,967","1,648,442,209","143.30","143.50","142.80","142.90","+0.60","12,271",\n', '"111/02/09","8,470,497","1,211,943,126","143.50","143.50","142.65","143.40","+0.50","10,362",\n', '"111/02/10","6,325,130","912,680,055","143.90","145.05","143.50","145.05","+1.65","9,065",\n', '"111/02/11","4,556,282","659,321,520","144.70","145.05","144.05","144.95","-0.10","6,376",\n', '"111/02/14","12,907,152","1,841,179,721","143.95","143.95","142.20","142.70","-2.25","23,175",\n', '"111/02/15","8,139,525","1,160,338,475","142.70","143.20","141.95","142.05","-0.65","16,664",\n', '"111/02/16","6,906,308","995,478,507","143.90","144.45","143.80","144.40","+2.35","9,252",\n', '"111/02/17","5,161,916","746,195,906","144.40","145.00","144.00","144.50","+0.10","7,328",\n', '"111/02/18","4,068,622","584,581,991","143.50","144.15","143.05","144.10","-0.40","5,997",\n', '"111/02/21","4,807,904","689,347,421","143.45","143.85","142.80","143.80","-0.30","8,772",\n', '"111/02/22","20,814,988","2,943,619,804","142.60","142.65","140.75","141.85","-1.95","42,631",\n', '"111/02/23","4,803,500","681,745,270","141.85","142.40","141.65","142.25","+0.40","8,142",\n', '"111/02/24","32,725,876","4,565,434,642","141.10","141.10","138.30","138.80","-3.45","67,346",\n', '"111/02/25","24,731,645","3,424,810,229","139.05","139.20","137.85","138.50","-0.30","43,146",\n', '"說明:"\n', '"符號說明:+/-/X表示漲/跌/不比價"\n', '"當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。"\n', '"ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。"\n', '\n']
可以注意到若以這種方式讀取檔案,串列的元素是以字串的形式存在,且將每個欄位以及逗號合在一起,難以做進一步的資料處理。在此,我們可以導入csv模組的reader()方法建立reader物件,再使用for迴圈逐行讀出reader物件資料,或是將其轉換為串列,每個欄位就可以被分開,成為串列的一個元素。
  • 使用for迴圈逐行讀出Reader物件資料:
with open("STOCK_DAY_0050_202202.csv") as csv_read_file:
  csv_read_data = csv.reader(csv_read_file)
  for row in csv_read_read_data:
    print(row)
執行結果:
['111年02月 0050 元大台灣50       各日成交資訊']
['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數', '']
['111/02/07', '25,312,461', '3,593,629,562', '142.60', '142.80', '141.20', '142.30', '+0.75', '27,821', '']
['111/02/08', '11,521,967', '1,648,442,209', '143.30', '143.50', '142.80', '142.90', '+0.60', '12,271', '']
['111/02/09', '8,470,497', '1,211,943,126', '143.50', '143.50', '142.65', '143.40', '+0.50', '10,362', '']
['111/02/10', '6,325,130', '912,680,055', '143.90', '145.05', '143.50', '145.05', '+1.65', '9,065', '']
['111/02/11', '4,556,282', '659,321,520', '144.70', '145.05', '144.05', '144.95', '-0.10', '6,376', '']
['111/02/14', '12,907,152', '1,841,179,721', '143.95', '143.95', '142.20', '142.70', '-2.25', '23,175', '']
['111/02/15', '8,139,525', '1,160,338,475', '142.70', '143.20', '141.95', '142.05', '-0.65', '16,664', '']
['111/02/16', '6,906,308', '995,478,507', '143.90', '144.45', '143.80', '144.40', '+2.35', '9,252', '']
['111/02/17', '5,161,916', '746,195,906', '144.40', '145.00', '144.00', '144.50', '+0.10', '7,328', '']
['111/02/18', '4,068,622', '584,581,991', '143.50', '144.15', '143.05', '144.10', '-0.40', '5,997', '']
['111/02/21', '4,807,904', '689,347,421', '143.45', '143.85', '142.80', '143.80', '-0.30', '8,772', '']
['111/02/22', '20,814,988', '2,943,619,804', '142.60', '142.65', '140.75', '141.85', '-1.95', '42,631', '']
['111/02/23', '4,803,500', '681,745,270', '141.85', '142.40', '141.65', '142.25', '+0.40', '8,142', '']
['111/02/24', '32,725,876', '4,565,434,642', '141.10', '141.10', '138.30', '138.80', '-3.45', '67,346', '']
['111/02/25', '24,731,645', '3,424,810,229', '139.05', '139.20', '137.85', '138.50', '-0.30', '43,146', '']
['說明:']
['符號說明:+/-/X表示漲/跌/不比價']
['當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。']
['ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。']
[]
  • 將Reader物件轉換為串列,再使用for迴圈逐行讀出串列內容:
with open("STOCK_DAY_0050_202202.csv") as csv_read_file:
  csv_read_data = csv.reader(csv_read_file)
  csv_read_list = list(csv_read_data)
  for row in csv_read_list:
    print(row)
執行得到相同的結果:
['111年02月 0050 元大台灣50       各日成交資訊']
['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數', '']
['111/02/07', '25,312,461', '3,593,629,562', '142.60', '142.80', '141.20', '142.30', '+0.75', '27,821', '']
['111/02/08', '11,521,967', '1,648,442,209', '143.30', '143.50', '142.80', '142.90', '+0.60', '12,271', '']
['111/02/09', '8,470,497', '1,211,943,126', '143.50', '143.50', '142.65', '143.40', '+0.50', '10,362', '']
['111/02/10', '6,325,130', '912,680,055', '143.90', '145.05', '143.50', '145.05', '+1.65', '9,065', '']
['111/02/11', '4,556,282', '659,321,520', '144.70', '145.05', '144.05', '144.95', '-0.10', '6,376', '']
['111/02/14', '12,907,152', '1,841,179,721', '143.95', '143.95', '142.20', '142.70', '-2.25', '23,175', '']
['111/02/15', '8,139,525', '1,160,338,475', '142.70', '143.20', '141.95', '142.05', '-0.65', '16,664', '']
['111/02/16', '6,906,308', '995,478,507', '143.90', '144.45', '143.80', '144.40', '+2.35', '9,252', '']
['111/02/17', '5,161,916', '746,195,906', '144.40', '145.00', '144.00', '144.50', '+0.10', '7,328', '']
['111/02/18', '4,068,622', '584,581,991', '143.50', '144.15', '143.05', '144.10', '-0.40', '5,997', '']
['111/02/21', '4,807,904', '689,347,421', '143.45', '143.85', '142.80', '143.80', '-0.30', '8,772', '']
['111/02/22', '20,814,988', '2,943,619,804', '142.60', '142.65', '140.75', '141.85', '-1.95', '42,631', '']
['111/02/23', '4,803,500', '681,745,270', '141.85', '142.40', '141.65', '142.25', '+0.40', '8,142', '']
['111/02/24', '32,725,876', '4,565,434,642', '141.10', '141.10', '138.30', '138.80', '-3.45', '67,346', '']
['111/02/25', '24,731,645', '3,424,810,229', '139.05', '139.20', '137.85', '138.50', '-0.30', '43,146', '']
['說明:']
['符號說明:+/-/X表示漲/跌/不比價']
['當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。']
['ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。']
[]

使用索引讀取串列內容

假設我們想讀取"元大台灣50"在二月份每天的收盤價,觀察一下上方資料的型態,可以看到資料的最前和最後有一些不屬於成交資訊的內容,因此對資料做一些簡易的判斷,捨去長度為1的列,即可用"日期"及"收盤價"所在的索引值讀出資料內容。
with open("STOCK_DAY_0050_202202.csv") as csv_read_file:
  csv_read_data = csv.reader(csv_read_file)
  csv_read_list = list(csv_read_data)
  for row in range(len(csv_read_list)-1):
    if len(csv_read_list[row]) > 1:
      print(csv_read_list[row][0], csv_read_list[row][6])
執行結果:
日期 收盤價
111/02/07 142.30
111/02/08 142.90
111/02/09 143.40
111/02/10 145.05
111/02/11 144.95
111/02/14 142.70
111/02/15 142.05
111/02/16 144.40
111/02/17 144.50
111/02/18 144.10
111/02/21 143.80
111/02/22 141.85
111/02/23 142.25
111/02/24 138.80
111/02/25 138.50

寫入CSV檔案

相對於讀取CSV檔案,寫入CSV檔案時,我們需要使用csv模組的writer()方法建立一個writer物件,再使用writerow()或writerows()方法逐行或一次寫入多行資料到CSV檔案。
以下範例將建立一個CSV檔案,將我們剛剛下載的"元大台灣50"在二月份的日成交資訊複製過來,其中newline=""的目的是避免每一列之間多出一個空白列。
with open("STOCK_DAY_0050_202202_copy.csv", mode="w", newline="") as csv_write_file:
  csv_write_data = csv.writer(csv_write_file)
  csv_write_data.writerows(csv_read_list)
執行過後,在主目錄底下會多出一個STOCK_DAY_0050_202202_copy.csv檔案,內容和STOCK_DAY_0050_202202.csv相同。
複製的CSV

設定分隔符號:delimiter關鍵字

前面提到,CSV檔案的分隔字元可以不是逗號,在寫入CSV檔案時,需要在writer()方法內用到delimiter關鍵字,如以下範例使用空格" "做為分隔符號。
with open("STOCK_DAY_0050_202202_delimiter.csv", mode="w", newline="") as csv_write_file:
  csv_write_data = csv.writer(csv_write_file, delimiter=" ")
  csv_write_data.writerows(csv_read_list)
可以看到欄位之間的分隔不再是預設的逗點,而是變成空格。
使用空格做為欄位分隔符號
在讀取分隔字元不是逗點的CSV檔案時,reader()方法也要做對應的設定,否則就會出現非預期的結果,如以下的錯誤範例,它在讀取前面使用空格分隔的CSV檔案"STOCK_DAY_0050_202202_delimiter.csv"時,把數字內的逗點當成了分隔點。
with open("STOCK_DAY_0050_202202_delimiter.csv") as csv_read_file:
  csv_read_data = csv.reader(csv_read_file)
  csv_read_list = list(csv_read_data)
  for row in csv_read_list:
    print(row)
執行結果:
['111年02月 0050 元大台灣50       各日成交資訊']
['日期 成交股數 成交金額 開盤價 最高價 最低價 收盤價 漲跌價差 成交筆數 ']
['111/02/07 25', '312', '461 3', '593', '629', '562 142.60 142.80 141.20 142.30 +0.75 27', '821 ']
['111/02/08 11', '521', '967 1', '648', '442', '209 143.30 143.50 142.80 142.90 +0.60 12', '271 ']
['111/02/09 8', '470', '497 1', '211', '943', '126 143.50 143.50 142.65 143.40 +0.50 10', '362 ']
['111/02/10 6', '325', '130 912', '680', '055 143.90 145.05 143.50 145.05 +1.65 9', '065 ']
['111/02/11 4', '556', '282 659', '321', '520 144.70 145.05 144.05 144.95 -0.10 6', '376 ']
['111/02/14 12', '907', '152 1', '841', '179', '721 143.95 143.95 142.20 142.70 -2.25 23', '175 ']
['111/02/15 8', '139', '525 1', '160', '338', '475 142.70 143.20 141.95 142.05 -0.65 16', '664 ']
['111/02/16 6', '906', '308 995', '478', '507 143.90 144.45 143.80 144.40 +2.35 9', '252 ']
['111/02/17 5', '161', '916 746', '195', '906 144.40 145.00 144.00 144.50 +0.10 7', '328 ']
['111/02/18 4', '068', '622 584', '581', '991 143.50 144.15 143.05 144.10 -0.40 5', '997 ']
['111/02/21 4', '807', '904 689', '347', '421 143.45 143.85 142.80 143.80 -0.30 8', '772 ']
['111/02/22 20', '814', '988 2', '943', '619', '804 142.60 142.65 140.75 141.85 -1.95 42', '631 ']
['111/02/23 4', '803', '500 681', '745', '270 141.85 142.40 141.65 142.25 +0.40 8', '142 ']
['111/02/24 32', '725', '876 4', '565', '434', '642 141.10 141.10 138.30 138.80 -3.45 67', '346 ']
['111/02/25 24', '731', '645 3', '424', '810', '229 139.05 139.20 137.85 138.50 -0.30 43', '146 ']
['說明:']
['符號說明:+/-/X表示漲/跌/不比價']
['當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。']
['ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。']
[]
加上正確的delimiter關鍵字即可正確讀出CSV檔案內容。
with open("STOCK_DAY_0050_202202_delimiter.csv") as csv_read_file:
  csv_read_data = csv.reader(csv_read_file, delimiter=" ")
  csv_read_list = list(csv_read_data)
  for row in csv_read_list:
    print(row)
執行結果:
['111年02月 0050 元大台灣50       各日成交資訊']
['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數', '']
['111/02/07', '25,312,461', '3,593,629,562', '142.60', '142.80', '141.20', '142.30', '+0.75', '27,821', '']
['111/02/08', '11,521,967', '1,648,442,209', '143.30', '143.50', '142.80', '142.90', '+0.60', '12,271', '']
['111/02/09', '8,470,497', '1,211,943,126', '143.50', '143.50', '142.65', '143.40', '+0.50', '10,362', '']
['111/02/10', '6,325,130', '912,680,055', '143.90', '145.05', '143.50', '145.05', '+1.65', '9,065', '']
['111/02/11', '4,556,282', '659,321,520', '144.70', '145.05', '144.05', '144.95', '-0.10', '6,376', '']
['111/02/14', '12,907,152', '1,841,179,721', '143.95', '143.95', '142.20', '142.70', '-2.25', '23,175', '']
['111/02/15', '8,139,525', '1,160,338,475', '142.70', '143.20', '141.95', '142.05', '-0.65', '16,664', '']
['111/02/16', '6,906,308', '995,478,507', '143.90', '144.45', '143.80', '144.40', '+2.35', '9,252', '']
['111/02/17', '5,161,916', '746,195,906', '144.40', '145.00', '144.00', '144.50', '+0.10', '7,328', '']
['111/02/18', '4,068,622', '584,581,991', '143.50', '144.15', '143.05', '144.10', '-0.40', '5,997', '']
['111/02/21', '4,807,904', '689,347,421', '143.45', '143.85', '142.80', '143.80', '-0.30', '8,772', '']
['111/02/22', '20,814,988', '2,943,619,804', '142.60', '142.65', '140.75', '141.85', '-1.95', '42,631', '']
['111/02/23', '4,803,500', '681,745,270', '141.85', '142.40', '141.65', '142.25', '+0.40', '8,142', '']
['111/02/24', '32,725,876', '4,565,434,642', '141.10', '141.10', '138.30', '138.80', '-3.45', '67,346', '']
['111/02/25', '24,731,645', '3,424,810,229', '139.05', '139.20', '137.85', '138.50', '-0.30', '43,146', '']
['說明:']
['符號說明:+/-/X表示漲/跌/不比價']
['當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。']
['ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。']
[]

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
到目前為止,我們都還是在附檔名為.py的Python檔案執行程式碼,當程式需要與外部的檔案互動,例如讀取文字、表格、或是影像來做分析,或是把程式執行的結果儲存下來,就需要能夠存取外部的檔案。例如,在上一節中,當貪食蛇遊戲結束之後,隨著程式停止執行,該次的分數也就被丟棄,若能將分數記錄下來,下次遊戲開
接續前一篇文章,說明貪食蛇遊戲架構的後半部份,來完成整個遊戲的程式設計。
接下來我們會運用之前所學過的各種觀念,包括Turtle 模組、繼承等等,來製作這個大家都熟知的小遊戲-貪食蛇。完成品會長得像下圖這樣,包括可以設定難度(速度)、使用鍵盤的上、下、左、右鍵來移動貪食蛇的移動方向來吃到食物並加長蛇身、以及記分板等。
Turtle Graphic的前身是一種設計給小朋友學習的簡易繪圖程式,最初來自於Wally Feurzeig、Seymour Papert和Cynthia Solomon於1967年所創造的Logo編程語言,它是Python內建的繪圖函式庫,我們可以根據函式庫裡面的指令,操控一隻或多隻「小烏龜」在
「繼承」顧名思義就是有一個或多個類別延續了某個類別的特性,就如同在人類社會裡,兒女接收了父母的財產、承襲了上代的技能、延續了前一輩的事業。在Python的語言裡,能夠繼承的特性為類別的屬性與方法,繼承的類別稱為子類別(child class / subclass)或衍伸類別(derived clas
在類別一節中,我們可以用Student類別的實體來存取類別中的name變數、score字典、以及其中的所有方法,這些可以被類別以外的程式碼所直接存取的屬性稱為公有屬性(public attribute)、可以被類別以外的程式碼所直接呼叫的方法稱為公有方法(public method)。
到目前為止,我們都還是在附檔名為.py的Python檔案執行程式碼,當程式需要與外部的檔案互動,例如讀取文字、表格、或是影像來做分析,或是把程式執行的結果儲存下來,就需要能夠存取外部的檔案。例如,在上一節中,當貪食蛇遊戲結束之後,隨著程式停止執行,該次的分數也就被丟棄,若能將分數記錄下來,下次遊戲開
接續前一篇文章,說明貪食蛇遊戲架構的後半部份,來完成整個遊戲的程式設計。
接下來我們會運用之前所學過的各種觀念,包括Turtle 模組、繼承等等,來製作這個大家都熟知的小遊戲-貪食蛇。完成品會長得像下圖這樣,包括可以設定難度(速度)、使用鍵盤的上、下、左、右鍵來移動貪食蛇的移動方向來吃到食物並加長蛇身、以及記分板等。
Turtle Graphic的前身是一種設計給小朋友學習的簡易繪圖程式,最初來自於Wally Feurzeig、Seymour Papert和Cynthia Solomon於1967年所創造的Logo編程語言,它是Python內建的繪圖函式庫,我們可以根據函式庫裡面的指令,操控一隻或多隻「小烏龜」在
「繼承」顧名思義就是有一個或多個類別延續了某個類別的特性,就如同在人類社會裡,兒女接收了父母的財產、承襲了上代的技能、延續了前一輩的事業。在Python的語言裡,能夠繼承的特性為類別的屬性與方法,繼承的類別稱為子類別(child class / subclass)或衍伸類別(derived clas
在類別一節中,我們可以用Student類別的實體來存取類別中的name變數、score字典、以及其中的所有方法,這些可以被類別以外的程式碼所直接存取的屬性稱為公有屬性(public attribute)、可以被類別以外的程式碼所直接呼叫的方法稱為公有方法(public method)。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
十年前,我跟小悟參加了台南政府所舉辦的 24 小時不間斷進食比賽,當年,我以兩分之差,沒擠進金榜。在挑戰時間內,來不及吃狀元糕跟芋頭八寶冰,以致失掉食物王的頭銜。十年後,小悟說,要不要再來回味當年勇?我知道,年輕的我胃袋能撐船,可逝去的青春,最先反映在食慾上。我笑著說不了......
Thumbnail
持著前作的風格,《蜘蛛人:穿越新宇宙》在色彩或畫面的呈現上依舊大膽、前衛,並且嘗試藉由多重宇宙的「優勢」,在成長動畫的既有敘事上,嘗試更多不同的可能性。精彩的安排讓觀看這部作品讓成為十足的享受,並賦予了觀眾再次進場支持的充分動機。
Thumbnail
節目這邊聽 📎錄製時間: 2023.10 汪汪隊立大功! MRT(Mission Readiness Test)是難度最高的國際搜救犬認證! 但是我們有兩位英雄(一人一汪)順利通過這次的認證,拿到了優良的成績! 讓我們歡迎領犬員羅浩芳!就讓她帶著小編、江小姐還有各位聽眾,一起了解這次搜救犬
Thumbnail
這一陣子不少投資標的都在上漲 連成長性沒有科技股強的食品股也在慢慢上升中 今天記錄一下自己食品股大成的最新績效 身為雞肉雙雄的其中一雄 除了飼料、雞肉、雞蛋以外,還跨足了沙拉油、豬肉、海鮮、餐廳等事業體 幾乎可說是一檔食品ETF(還不用付管理費),進去它的官網就可以看到許多不同的事業體
Thumbnail
你現在也許單一個句子可以說得溜,但持續說話覺得尷尬的原因在於:缺乏連接詞。好的連接詞會讓口語表達更精確有力,讓韓國人聽到你說的話不需要猜測意思或重新思考,表達能力也就跟著上升!
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:惡作劇之吻、慶餘年、Good Casting、溫柔時光、鋼之鍊金術師這五個戲劇作品的主題曲。
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:必娶女人、kill me heal me、錦衣之下、101次求婚、灌籃高手這五個戲劇作品的主題曲。
近期許多地方受到洪水以及颱風的侵襲 但包你發的線路及網路穩定度完全不受到影響 大家可以放心,我們是24小時全年無休不間斷 就算你半夜三點要玩包你發也完全OK 不會像有些系統只在白天開放 而同樣的穩定度也是一大考驗 在這種供電不穩定的情況 也有可能導致其他遊戲斷線 但包你發機房穩定、有備用電源 完全不
Thumbnail
疫情長時間帶來了減少開放性的社交機會,最直接的影響莫過於情緒勒索造成的封閉性失調,感謝國立台灣戲曲學院傑出校友,為身心障礙的大寶寶們帶來一系列精彩的演出,透過精心策劃的舞蹈及雜耍表演,帶給住民體驗了跟以往不同的志工服務內容,見到了久違住民
Thumbnail
每一次TDCA的關愛陪伴,都讓受贈的服務對象感受到滿滿的幸福感,一起協力完成手作皮革鑰匙圈,每一針每一線都在訓練孩子們手眼協調的肢體,透過不同花色皮革來搭配,不僅訓練孩子對色彩的辨識能力,同時也在培養眼界裡的審美觀噢!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
十年前,我跟小悟參加了台南政府所舉辦的 24 小時不間斷進食比賽,當年,我以兩分之差,沒擠進金榜。在挑戰時間內,來不及吃狀元糕跟芋頭八寶冰,以致失掉食物王的頭銜。十年後,小悟說,要不要再來回味當年勇?我知道,年輕的我胃袋能撐船,可逝去的青春,最先反映在食慾上。我笑著說不了......
Thumbnail
持著前作的風格,《蜘蛛人:穿越新宇宙》在色彩或畫面的呈現上依舊大膽、前衛,並且嘗試藉由多重宇宙的「優勢」,在成長動畫的既有敘事上,嘗試更多不同的可能性。精彩的安排讓觀看這部作品讓成為十足的享受,並賦予了觀眾再次進場支持的充分動機。
Thumbnail
節目這邊聽 📎錄製時間: 2023.10 汪汪隊立大功! MRT(Mission Readiness Test)是難度最高的國際搜救犬認證! 但是我們有兩位英雄(一人一汪)順利通過這次的認證,拿到了優良的成績! 讓我們歡迎領犬員羅浩芳!就讓她帶著小編、江小姐還有各位聽眾,一起了解這次搜救犬
Thumbnail
這一陣子不少投資標的都在上漲 連成長性沒有科技股強的食品股也在慢慢上升中 今天記錄一下自己食品股大成的最新績效 身為雞肉雙雄的其中一雄 除了飼料、雞肉、雞蛋以外,還跨足了沙拉油、豬肉、海鮮、餐廳等事業體 幾乎可說是一檔食品ETF(還不用付管理費),進去它的官網就可以看到許多不同的事業體
Thumbnail
你現在也許單一個句子可以說得溜,但持續說話覺得尷尬的原因在於:缺乏連接詞。好的連接詞會讓口語表達更精確有力,讓韓國人聽到你說的話不需要猜測意思或重新思考,表達能力也就跟著上升!
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:惡作劇之吻、慶餘年、Good Casting、溫柔時光、鋼之鍊金術師這五個戲劇作品的主題曲。
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:必娶女人、kill me heal me、錦衣之下、101次求婚、灌籃高手這五個戲劇作品的主題曲。
近期許多地方受到洪水以及颱風的侵襲 但包你發的線路及網路穩定度完全不受到影響 大家可以放心,我們是24小時全年無休不間斷 就算你半夜三點要玩包你發也完全OK 不會像有些系統只在白天開放 而同樣的穩定度也是一大考驗 在這種供電不穩定的情況 也有可能導致其他遊戲斷線 但包你發機房穩定、有備用電源 完全不
Thumbnail
疫情長時間帶來了減少開放性的社交機會,最直接的影響莫過於情緒勒索造成的封閉性失調,感謝國立台灣戲曲學院傑出校友,為身心障礙的大寶寶們帶來一系列精彩的演出,透過精心策劃的舞蹈及雜耍表演,帶給住民體驗了跟以往不同的志工服務內容,見到了久違住民
Thumbnail
每一次TDCA的關愛陪伴,都讓受贈的服務對象感受到滿滿的幸福感,一起協力完成手作皮革鑰匙圈,每一針每一線都在訓練孩子們手眼協調的肢體,透過不同花色皮革來搭配,不僅訓練孩子對色彩的辨識能力,同時也在培養眼界裡的審美觀噢!