如何告诉 python 3 跳过 csv 文件中的非数字字符

how to tell python 3 to skip over non-digit characters from a csv file

我正在使用 python 3.4.3

我是 python 和堆栈溢出的新手,我正在尝试从 csv 列计算平均值,有些框包含问号,不会让我将它们转换为浮点数 (obv) 有谁知道如何我可以告诉 python 跳过问号还是直接删除它们?任何反馈都会有很大帮助,谢谢。

average0 = 0
average1 = 0
average2 = 0
def average(rowNum, averageNum):
    with open('positive.csv', newline='') as f:
        reader = csv.reader(f)
        the_numbers = [float(row[rowNum]) for row in reader]
        averageNum = sum(the_numbers) / len(the_numbers)
        averageWith.insert(rowNum, averageNum)
def main():
    average(0, average0)
    average(1, average1)
    average(2, average2)
main()

如果奇怪的字符是已知的(即只有'?')可能是这样的?

    the_numbers = [float(row[rowNum]) for row in reader if row[rowNum] not in "?"] 
    #replace "?" with a string of any strange characters

顺便说一句,该代码在其他地方有些奇怪:averageNum 是一个不可变对象:将其作为参数传递并在函数内部修改其值不会在函数外部更改它。如果那是你想要的,我建议你让你的 average() 函数 return 表示平均值。

你可以试试这样的

the_numbers = []
for row in reader:
  try:
    the_numbers.append(float(row[rowNum]))
  except:
    pass