我試圖確定.csv
文件的每一列中包含的數據的類型,以便我可以爲MySQL創建CREATE TABLE
語句。該程序將列出所有列標題,然後獲取第一行數據並確定每種數據類型並將其附加到列標題以獲取正確的語法。例如:查找沒有空字符串的行
ID Number Decimal Word
0 17 4.8 Joe
這會產生類似CREATE TABLE table_name (ID int, Number int, Decimal float, Word varchar());
的東西。
問題是,在某些.csv
文件中,第一行包含一個NULL
值,該值作爲空字符串讀取並混淆該過程。我的目標是搜索每一行,直到找到一個不包含NULL
的值,並在形成語句時使用該值。這是我迄今所做的,只是它有時仍然會返回行包含空字符串:
def notNull(p): # where p is a .csv file that has been read in another function
tempCol = next(p)
tempRow = next(p)
col = tempCol[:-1]
row = tempRow[:-1]
if any('' in row for row in p):
tempRow = next(p)
row = tempRow[:-1]
else:
rowNN = row
return rowNN
注:.csv
文件讀取是在不同的函數中完成,而這個功能只需使用已讀.csv
文件作爲輸入p
。此外,每行以,
結尾,將其視爲一個額外的空字符串,因此在檢查每行的最後一個值之前,先檢查它是否爲空字符串。
問題:我創建的函數有什麼問題導致它不總是返回沒有空字符串的行?我覺得這是因爲循環沒有必要重複,但我不太清楚如何解決這個問題。
你能否說明p的類型是什麼?它是一串字符串列表嗎? –
我在_Note_下面提到了它的功能。 'p'是另一個函數讀取的'.csv'文件。 – ThoseKind