我是python的新手,我正在尝试读取csv输入和输出文件,逐行扫描输入文件,并只将那些没有任何特殊字符(如'?'或'0')的行写入输出文件。下面是我的代码:
import csv
import sys
class PreProcessDataSet:
def preProcessData(self) :
print ('Enter the input path of the file : ')
inputFile = open(sys.argv[1], 'rb')
outputFile = open(sys.argv[2],'wb')
writer = csv.writer(outputFile)
i = 0
for row in csv.reader(inputFile):
if (row[i]!="0" or row[i] != "?"):
writer.writerow(row)
i=i+1
print row
这段代码给予任何输出。有人能帮我吗?
1条答案
按热度按时间mwkjh3gx1#
你的条件
if (row[i]!="0" or row[i] != "?"):
总是true。假设它是0,那么它肯定不是--所以or
条件之一总是通过。这段代码应该打印行,直到它因为其他原因崩溃(见下文)。所以,我认为你的第一个问题是你实际上没有调用该方法。接下来,每行递增一次列索引器
i
,因此它将读取第一行的单元格0,第二行的单元格1,......最终,当i
增长到大于列数时,您将得到一个索引错误。它也没有真正做到您想要的,它只是每行检查一个单元格。您可以使用集合交集来找出某个单元格中是否存在受限制的字符。我不清楚该单元格是否必须完全等于某个受限制的字符,所以我编写了这个示例,通过将该行与一个字符串连接起来进行检查,来查找该行中出现的任何字符。
样品运行: