我一直致力于从 csv 文件中获取行的代码,并将它们传输到整数列表中以进行进一步的数学运算。但是,如果一行变为空,则会导致问题。此外,用户将不知道哪一行是空的,因此解决方案应该是通用的,而不是指向一行并将其删除。这是代码:
import csv
import statistics as st
def RepresentsInt(i):
try:
int(i)
return True
except ValueError:
return False
l = []
with open('Test.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
l.append([int(r) if RepresentsInt(r) else 0 for r in row])
for row in l:
row=[x for x in row if x!=0]
row.sort()
print(row)
我已经尝试了l=[row for row in l if row!=[]]
和...
if row==[]:
l.remove(row)
...但两者都什么都不做,并且两者都没有错误代码。这是我的 csv 文件:
1,2,5,4
2,3
43,65,34,56,7
0,5
7,8,9,6,5
33,45,65,4
如果我运行代码,我会得到[]第4行和第6行(它们是空的)。
答案 0 :(得分:1)
这适用于我的机器:
import csv
def RepresentsInt(i):
try:
int(i)
return True
except ValueError:
return False
l = []
with open('Test.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
l.append([int(r) for r in row if RepresentsInt(r)])
rows = [row for row in l if row]
for row in rows:
print(row)
答案 1 :(得分:0)
目前还不清楚你在使用statistics
模块做了什么,但是下面的程序应该是你要求的。导入pprint
模块以使显示生成的表更容易阅读。如果这个答案解决了你问题中出现的问题,但你在其他地方遇到了困难,请确保打开另一个针对新问题的问题。
#! /usr/bin/env python3
import csv
import pprint
def main():
table = []
# Add rows to table.
with open('Test.csv', newline='') as file:
table.extend(csv.reader(file))
# Convert table cells to numbers.
for index, row in enumerate(table):
table[index] = [int(value) if value.isdigit() else 0 for value in row]
# Remove zeros from the rows.
for index, row in enumerate(table):
table[index] = [value for value in row if value]
# Remove empty rows and display the table.
table = [row for row in table if row]
pprint.pprint(table)
if __name__ == '__main__':
main()