【发布时间】:2020-09-04 10:37:41
【问题描述】:
如果之前已经回答过这个问题,我深表歉意,但是我检查了一堆帖子,只是无法理解我的代码有什么问题。 我正在尝试在 python 中读取一个 csv 文件(见下文)并通过第二列(角度)中的值过滤掉数据行。 然后我想用过滤的时间和角度值创建一个新的输出文件。 我只得到写有标题的输出文件。
csv 文件:
time,angle
0,56
1,89
2,112
3,189
4,122
5,123
代码:
import csv
#define the min and max value of angle
alpha_min = 110
alpha_max = 125
#read csv file and loop through with a filter
with open('test_csv.csv', 'r') as input_file:
csv_reader = csv.reader(input_file)#, delimiter=',')
#header = next(input_file).strip("\n").split(",")
results = filter(lambda row: alpha_min<row[1]<alpha_max, csv_reader)
#create output file
with open('test_output_csv.csv', "w") as output_file:
csv_writer = csv.writer(output_file, delimiter=',')
csv_writer.writerow(header)
for result in results:
csv_writer.writerow(result)
【问题讨论】:
-
python 不会像你想象的那样评估
alpha_min<row[1]<alpha_max。你应该把它拆开alpha_min<row[1] and row[1]<alpha_max -
@AskoldIlvento 实际上,Python 确实是这样工作的,但
row[1]是一个字符串,所以需要int(row[1])。