我试图确定.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