如何告诉 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
我正在使用 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