test.txt內容如下:

第一列最後的a之後,故意多兩個空白
Q1: 如何分辨分隔子是tab還是不定數空白?
Q2: 如何讀取tab與不定數空白混用的csv?
Q3: 如何用pandas.Series.str.split()
將Series依據分隔子(tab與不定數空白混用)
拆分為多欄的DataFrame?
Q1 & Q2:

df的第0列出現三個 \t
第一列則無
可以據此分辨
tab與不定數空白
雖然df只有一欄而已
仍須注意其type為DataFrame
需要將df轉為Series
才能使用
pandas.Series.str.split( pat = “\s+|\t“, expand=True, n=3 )
使用 ser = df.iloc[:,0] 轉換:

或者df[0] 也可,
0為column name:
#df[[0]]則為DataFrame,
#內層的[]是list的意思

df_split = ser.str.split( pat =”\s+|\t“,expand=True)
正則表示法:
\s+ 不定數空白
\t TAB鍵
| 或

df_split
df_split_n3
可以看出參數n=3的差異
str type的變數,
參數使用sep (非pat)
且不支援 正則表示法:

df_split.to_excel(r”C:\temp\df_split.xlsx”):

最後一欄為空
Python中顯示None ” (空字串):

多加一個參數n=3
df_split_n3.to_excel(r”C:\temp\df_split_n3.xlsx”)

沒有出現最後一個空欄了
但a後面有多餘的空白
也就是剩下沒切割的
都堆在最後一欄
Python中顯示:

如果想要處理多餘的空白
df_split_n3.iloc[:, -1].str.strip()

推薦hahow線上學習python: https://igrape.net/30afN


![Python Logging 完全指南:從基礎到實戰應用; import logging ; logging.basicConfig(level=logging.INFO, handlers=[ logging.StreamHandler(), logging.FileHandler(‘app.log’, mode=’a’, encoding=’utf-8′)] ) ; inspect.currentframe().f_code.co_name #動態取得funcName Python Logging 完全指南:從基礎到實戰應用; import logging ; logging.basicConfig(level=logging.INFO, handlers=[ logging.StreamHandler(), logging.FileHandler(‘app.log’, mode=’a’, encoding=’utf-8′)] ) ; inspect.currentframe().f_code.co_name #動態取得funcName](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2025/10/20251021155823_0_c16012.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


![Python爬蟲:BeautifulSoup的 .find_all() 與 .find() 與 .select(‘標籤名[屬性名1=”屬性值1″][屬性名2=”屬性值2″]’) ; from bs4 import BeautifulSoup ; Live Server(可以預覽HTML的VS Code套件) Python爬蟲:BeautifulSoup的 .find_all() 與 .find() 與 .select(‘標籤名[屬性名1=”屬性值1″][屬性名2=”屬性值2″]’) ; from bs4 import BeautifulSoup ; Live Server(可以預覽HTML的VS Code套件)](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2025/03/20250330190318_0_925655.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)





近期留言