python - 从 CSV 文件中读取特定的单元格

标签 python loops csv

我试图遍历 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. 如何从此矩阵打印特定单元格?

谢谢!

最佳答案

你有几个问题:

  1. 您的数据没有用逗号分隔,但您的代码表明它应该是
  2. csv.reader 返回一个数组而不是一个单元格
  3. cell[0] 返回一个字符的原因是因为您在执行 cell = ', '.join 时将数组 cell 转换为字符串(细胞)'string'[0] 将返回字符串的第一个字符,这就是为什么 cell[0] 只给您第一个数字的原因。
  4. 我添加了 read_matrix_2,它将返回您要查找的矩阵。

这是一个如何访问单元格的工作示例: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]

数据.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

关于python - 从 CSV 文件中读取特定的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53632161/

相关文章:

mysql - 将 CSV 文件导入数据库 - 拒绝某些行

python - 值错误 : dict contains fields not in fieldnames

python - 将值从元组列表映射到另一个列表

python - 如何使用 tempfile 模块从 NamedTemporaryFile 获取 Python os.PathLike 对象?

python - 如何 append 到文件?

没有 PANDAS 的 Python 聚合

python - Python 中的 CSV 文件删除括号、引号和 u

python - 如何比较Python中两个字符串的差异?

python - 每 'n' 次迭代暂停循环并等待用户按键。 - Python

linux - 删除某些列并在 AW 中水平添加。太多的列,我无法输入每一列