[英]read specific cell from a CSV file
我正在尝试迭代CSV文件中的每个单元格,但没有任何成功。 为简化起见,假设我的csv文件是3x3矩阵:
8.046875 10.4375 -0.625
0.171875 4.546875 1.953125
-4.890625 -3.703125 6.359375
现在,我使用以下代码迭代单元格:
import csv
class GetData:
def __init__(self, path):
self.path = path
def read_matrix(self):
with open(self.path, 'r') as matrix:
csv_reader = csv.reader(matrix, delimiter=',')
for cell in csv_reader:
cell = ', '.join(cell)
print(cell)
test = GetData('D:/testFile_0001.ascii.csv')
test.read_matrix()
如果我运行此代码,它将打印上面显示的矩阵。 当我改为:
print(cell[0])
输出是:
8
0
-
我的问题是:1。为什么打印出第一列的第一个数字? 2.如何从该矩阵打印特定单元格?
谢谢!
你有一些问题:
cell[0]
返回一个字符的原因是你在执行cell = ', '.join(cell)
时将数组cell
转换为字符串。 'string'[0]
将返回一个字符串的第一个字符,这就是为什么cell[0]
只给你第一个数字。 以下是如何访问单元格的工作示例: https : //paiza.io/projects/gkwMf22jbQEb3CO9d1BHjQ?language = python
import csv
class GetData:
def __init__(self, path):
self.path = path
def read_matrix(self):
with open(self.path, 'r') as matrix:
csv_reader = csv.reader(matrix, delimiter=',')
for row in csv_reader:
print row
print ', '.join(row)
for i, cell in enumerate(row):
print "cell[{i}]={cell}".format(**locals())
def read_matrix_2(self):
with open(self.path, 'r') as matrix:
csv_reader = csv.reader(matrix, delimiter=',')
return [ row for row in csv_reader]
test = GetData('data.csv')
test.read_matrix()
print "This will give you a matrix"
matrix = test.read_matrix_2()
print matrix
print matrix[2][1]
data.csv
8.046875,10.4375,-0.625
0.171875 ,4.546875,1.953125
-4.890625 ,-3.703125,6.359375
产量
['8.046875', '10.4375', '-0.625']
8.046875, 10.4375, -0.625
cell[0]=8.046875
cell[1]=10.4375
cell[2]=-0.625
['0.171875 ', '4.546875', '1.953125']
0.171875 , 4.546875, 1.953125
cell[0]=0.171875
cell[1]=4.546875
cell[2]=1.953125
['-4.890625 ', '-3.703125', '6.359375']
-4.890625 , -3.703125, 6.359375
cell[0]=-4.890625
cell[1]=-3.703125
cell[2]=6.359375
This will give you a matrix
[['8.046875', '10.4375', '-0.625'], ['0.171875 ', '4.546875', '1.953125'], ['-4.890625 ', '-3.703125', '6.359375']]
-3.703125
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.