python如何讀取指定csv單元格
python讀取指定csv單元格
可以使用Python的pandas庫(kù)讀取csv文件中的指定單元格。
例如,假設(shè)有一個(gè)名為"data.csv"的文件,要讀取其第2行第3列的單元格,可以這樣做:
import pandas as pd
# 讀取csv文件
df = pd.read_csv("data.csv")
# 讀取指定單元格
value = df.iloc[1, 2]
print(value)其中,iloc函數(shù)用于讀取指定行、列的單元格。
第一個(gè)參數(shù)是行索引,第二個(gè)參數(shù)是列索引。
對(duì)csv文件指定單元格的處理
CSV文件:Comma-Separated Values,逗號(hào)分隔值或者字符分割值,其文件以純文本的形式存儲(chǔ)表格數(shù)據(jù)。用文本文件和Excel都可以打開(kāi)CSV文件。
下面是分別用excel和記事本打開(kāi)的兩個(gè)csv文件。
規(guī)范的t.csv


非規(guī)范的test.csv


注意:
- 如果單元格內(nèi)容中存在逗號(hào),那么這個(gè)單元格內(nèi)容會(huì)用雙引號(hào)分隔出來(lái)。如圖中test.csv中第一個(gè)單元格。
- 如果單元格內(nèi)容中存在雙引號(hào),那在記事本打開(kāi)同樣會(huì)多加引號(hào),具體怎么加這里csv的處理規(guī)則好像有點(diǎn)奇怪,目前我也還沒(méi)完全搞明白。
一般的csv文件都有規(guī)范的表頭和對(duì)應(yīng)的每行數(shù)據(jù),前兩張圖片中打開(kāi)的都是規(guī)范的csv文件,后兩張圖片打開(kāi)的是非規(guī)范的csv文件,而Python的csv庫(kù)中也只有對(duì)csv文件整行的操作,并沒(méi)有像excel一樣可以對(duì)任意單元格操作,所以要對(duì)非規(guī)范的csv文件操作任意單元格是困難的。
本文實(shí)現(xiàn)了對(duì)非規(guī)范的csv文件的操作。
思路:csv–>二維列表–>通過(guò)列表定位單元格–>列表重寫(xiě)成csv
代碼如下:
import csv
class HandleCsv:
# 定義存放csv內(nèi)容的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列空白單元格處修改內(nèi)容
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):
# 如果該單元格左邊的單元格為空,那么先對(duì)左邊的單元格寫(xiě)入空格
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列單元格內(nèi)容
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)):
# 若元素中含有逗號(hào),那么需要加雙引號(hào)
if items[i].find(',') != -1:
fp.write('\"')
fp.write(items[i])
fp.write('\"')
else:
fp.write(items[i])
# 最后一個(gè)元素不用加逗號(hào)
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')
運(yùn)行程序前的csv:

運(yùn)行程序后的csv:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pandas如何將表中的字符串轉(zhuǎn)成數(shù)值型
在用pd.read_csv讀數(shù)據(jù)時(shí),將要轉(zhuǎn)換數(shù)據(jù)類型的列名和類型名構(gòu)成字典,傳給dtype,怎么轉(zhuǎn)換呢,下面小編給大家分享下pandas將表中的字符串轉(zhuǎn)成數(shù)值型,感興趣的朋友一起看看吧2023-02-02
python實(shí)現(xiàn)可下載音樂(lè)的音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)可下載音樂(lè)的音樂(lè)播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Python流行ORM框架sqlalchemy安裝與使用教程
這篇文章主要介紹了Python流行ORM框架sqlalchemy安裝與使用,結(jié)合具體實(shí)例形式分析了sqlalchemy的安裝及ORM映射、查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
如何使用python爬蟲(chóng)爬取要登陸的網(wǎng)站
這篇文章主要介紹了如何使用python爬蟲(chóng)爬取要登陸的網(wǎng)站,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
django admin實(shí)現(xiàn)動(dòng)態(tài)多選框表單的示例代碼
借助django-admin,可以快速得到CRUD界面,但若需要?jiǎng)?chuàng)建多選標(biāo)簽字段時(shí),需要對(duì)表單進(jìn)行調(diào)整,本文通過(guò)示例代碼給大家介紹django admin多選框表單的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2021-05-05
python使用ctypes調(diào)用擴(kuò)展模塊的實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于python使用ctypes調(diào)用擴(kuò)展模塊的實(shí)例方法內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-01-01
Python Pytorch gpu 分析環(huán)境配置
Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個(gè)電腦上裝個(gè)Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下2023-04-04
Python利用wxPython制作股票價(jià)格查詢工具
在當(dāng)今信息時(shí)代,金融市場(chǎng)是一個(gè)引人注目的話題。本文將介紹如何使用 Yahoo Finance API、yfinance 模塊和 wxPython 庫(kù)來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的全球股市實(shí)時(shí)價(jià)格查詢工具,希望大家能夠喜歡2023-05-05
編寫(xiě)簡(jiǎn)單的Python程序來(lái)判斷文本的語(yǔ)種
這篇文章主要介紹了編寫(xiě)簡(jiǎn)單的Python程序來(lái)判斷語(yǔ)種,代碼非常簡(jiǎn)單,主要用到了langid工具包,需要的朋友可以參考下2015-04-04

