查找没有空字符串的行

时间:2016-07-29 15:39:09

标签: python python-3.x csv

我正在尝试确定<pre><td>@Html.DisplayFor(model => model.FooBar)&nbsp;&#181;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结束,该,被视为一个额外的空字符串,因此我在检查空字符串之前将每个行的最后一个值切片。

问题:我创建的函数有什么问题导致它不总是返回没有空字符串的行?我觉得这是因为循环不是必要的重复,但我不太确定如何解决这个问题。

1 个答案:

答案 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))