我正在尝试确定<pre><td>@Html.DisplayFor(model => model.FooBar) µl</td></pre>
文件的每一列中包含的数据类型,以便我可以为MySQL创建.csv
语句。该程序列出所有列标题,然后抓取第一行数据并确定每种数据类型并将其附加到列标题以获得正确的语法。例如:
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
结束,该,
被视为一个额外的空字符串,因此我在检查空字符串之前将每个行的最后一个值切片。
问题:我创建的函数有什么问题导致它不总是返回没有空字符串的行?我觉得这是因为循环不是必要的重复,但我不太确定如何解决这个问题。
答案 0 :(得分:2)
我无法真正破译你的代码。这就是我要做的只是获取没有空字符串的行。
import csv
def g(name):
with open('file.csv', 'r') as f:
r = csv.reader(f)
# Skip headers
row = next(r)
for row in r:
if '' not in row:
yield row
for row in g('file.csv'):
print('row without empty values: {}'.format(row))