python如何读取指定csv单元格
作者:13572025090
这篇文章主要介绍了python如何读取指定csv单元格方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python读取指定csv单元格
可以使用Python的pandas库读取csv文件中的指定单元格。
例如,假设有一个名为"data.csv"的文件,要读取其第2行第3列的单元格,可以这样做:
import pandas as pd # 读取csv文件 df = pd.read_csv("data.csv") # 读取指定单元格 value = df.iloc[1, 2] print(value)
其中,iloc函数用于读取指定行、列的单元格。
第一个参数是行索引,第二个参数是列索引。
对csv文件指定单元格的处理
CSV文件:Comma-Separated Values,逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据。用文本文件和Excel都可以打开CSV文件。
下面是分别用excel和记事本打开的两个csv文件。
规范的t.csv
非规范的test.csv
注意:
- 如果单元格内容中存在逗号,那么这个单元格内容会用双引号分隔出来。如图中test.csv中第一个单元格。
- 如果单元格内容中存在双引号,那在记事本打开同样会多加引号,具体怎么加这里csv的处理规则好像有点奇怪,目前我也还没完全搞明白。
一般的csv文件都有规范的表头和对应的每行数据,前两张图片中打开的都是规范的csv文件,后两张图片打开的是非规范的csv文件,而Python的csv库中也只有对csv文件整行的操作,并没有像excel一样可以对任意单元格操作,所以要对非规范的csv文件操作任意单元格是困难的。
本文实现了对非规范的csv文件的操作。
思路:csv–>二维列表–>通过列表定位单元格–>列表重写成csv
代码如下:
import csv class HandleCsv: # 定义存放csv内容的list csv_list = [] def __init__(self, filename): self.filename = filename with open(self.filename)as fp: self.csv_list = list(csv.reader(fp)) print(self.csv_list) # 在第N行第M列空白单元格处修改内容 def modify(self, n, m, value): self.csv_list[n - 1][m - 1] = value # 插入第N行 def insert_row(self, n): self.csv_list.insert(n - 1, []) # 在第N行第M列单元格插入 def insert_col(self, n, m, value): # 如果该单元格左边的单元格为空,那么先对左边的单元格写入空格 if len(self.csv_list[n - 1]) < m: if len(self.csv_list[n - 1]) == m - 1: self.csv_list[n - 1].append(value) else: for i in range(len(self.csv_list[n - 1]), m - 1): self.csv_list[n - 1].append('') self.csv_list[n - 1].append(value) else: self.modify(n, m, value) # 删除第N行 def del_row(self, n): del self.csv_list[n - 1] # 获取第n行第m列单元格内容 def get_value(self, n, m): return self.csv_list[n - 1][m - 1] def list2csv(self, file_path): try: fp = open(file_path, 'w') for items in self.csv_list: for i in range(len(items)): # 若元素中含有逗号,那么需要加双引号 if items[i].find(',') != -1: fp.write('\"') fp.write(items[i]) fp.write('\"') else: fp.write(items[i]) # 最后一个元素不用加逗号 if i < len(items) - 1: fp.write(',') fp.write('\n') except Exception as e: print(e) if __name__ == '__main__': h_csv = HandleCsv(u'test.csv') # 在第4行处插入一行 h_csv.insert_row(4) # 在第4行第4列处插入单元格 h_csv.insert_col(4, 4, '第4行,第4列') h_csv.list2csv(u'test.csv')
运行程序前的csv:
运行程序后的csv:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。