我对python很新。对于练习,我正在读取csv文件中的数据并将其存储在列表中。遇到问题然后访问列表中的元素并将其存储为变量。
文件中包含的数据将是一个ID,后跟两组坐标
ID, x1, y1, x2, y2
我需要能够从列表中提取数据,以便稍后在计算中使用。希望循环遍历列表以计算多行。
感谢任何帮助!
干杯
答案 0 :(得分:0)
您应该使用csv
库
with open('/path/to/file.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
ID, x1, y1, x2, y2 = row
答案 1 :(得分:0)
一种方法是在字典中收集数据(也许id
字段可以是关键字)并收集该特定ID的所有坐标。
这是一种这样的方法:
import csv
from collections import defaultdict
data = defaultdict(list)
with open('your_file.csv') as f:
reader = csv.reader(f)
next(reader) # skips the header row
for row in reader:
data[row[0]].append(((row[1],row[2]),(row[3],row[4])))
根据您的评论:
然后我如何访问值来计算以下内容: sqrt((x2-x1)** 2 +(y2-y1)** 2)两行中的每一行(例1和 例子2)包含在字典中?
您可以在阅读文件时进行计算,只需按id
值存储结果:
for row in reader:
id, x1, y1, x2, y2 = row
# We have to convert the numbers from a string to floats for the calculation
result = sqrt(float(x2)-float(x1))**2 + (float(y2)-float(y1))**2
data[id].append(result)
然后,您可以打印结果:
for id, results in data.iteritems():
print('For ID: {}'.format(id))
for row, result in enumerate(results):
print('\t{} - {}'.format(row+1, result))