1. 程式人生 > 程式設計 >python3讀取csv檔案任意行列程式碼例項

python3讀取csv檔案任意行列程式碼例項

這篇文章主要介紹了python3讀取csv檔案任意行列程式碼例項,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

讀取每一行

reader = csv.reader(f) 此時reader返回的值是csv檔案中每行的列表,將每行讀取的值作為列表返回

#讀取每一行
filename='D:\\file_information1.csv'
import csv

with open(filename,newline = '',encoding = 'utf-8') as f:   #引數encoding = 'utf-8'防止出現亂碼
  reader = csv.reader(f)   #使用csv的reader()方法,建立一個reader物件 csv.reader()讀取結果是列表
  for row in reader: #遍歷reader物件的每一行
    print(row)

如何往csv格式檔案寫入資料

1.write()函式寫入文字檔案的也是字串型別。

2.在'w'和'a'模式下,如果你開啟的檔案不存在,那麼open()函式會自動幫你建立一個

3.'w'寫入模式會給你暴力清空掉檔案,然後再給你寫入。如果你只想增加東西,而不想完全覆蓋掉原檔案的話,就要使用'a'模式,表示append,你學過,它是追加的意思。

file1 = open('D:\\new\\abc.txt','a',encoding='utf-8')
file1.write('張無忌\n')
file1.write('宋青書\n')
file1.close()

enumerate()


enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標 ,一般用在 for 迴圈當

以下是 enumerate() 方法的語法: enumerate(sequence,[start=0])

  • sequence -- 一個序列、迭代器或其他支援迭代物件。
  • start -- 下標起始位置。

返回 enumerate(列舉) 物件

seasons = ['Spring','Summer','Fall','Winter']
print(list(enumerate(seasons)))       # [(0,'Spring'),(1,'Summer'),(2,'Fall'),(3,'Winter')]
print(list(enumerate(seasons,start=1)) ) # [(1,(4,'Winter')]
# 普通for迴圈:
i = 0
seq = ['one','two','three']
for element in seq:
  print( i,seq[i])
  i +=1
'''
one
two
three
'''
# for 迴圈使用 enumerate
seq1 = ['one','three']
for j,element in enumerate(seq1):
  print (j,element)
'''
one
two
three
'''

獲取檔案的編碼方式

import chardet
def get_file_code(file_path):
  with open(file_path,'rb') as f:
    data = f.read()
    print('獲取到的CSV檔案編碼為:%s' % (chardet.detect(data)['encoding']))
    return chardet.detect(data)['encoding']

file_path = r'D:\\file_information1.csv'
get_file_code(file_path)

判斷檔案的編碼方式

f = open("D:\\file_information1.csv","rb")#二進位制格式讀檔案
i = 0
while True:
  print(i)
  line = f.readline()
  if not line:
    break
  else:
    try:
#       print(line)
#       print(line.decode('utf8'))
      line.decode('utf8')
      #為了暴露出錯誤,最好此處不print
    except:
      print(str(line))
  i += 1

讀取首行

filename='D:\\file_information1.csv'
with open(filename,'r',encoding='utf-8')as f: #自行先判斷檔案的編碼方式
  read=f.readlines()
  for index,info in enumerate(read):
    if index ==0:  #這裡判斷
      #這裡輸出的是字串型別
      print(info)

讀取首行之外的所有行

filename='D:\\file_information1.csv'
with open(filename,encoding='utf-8')as f:
  read=f.readlines()
  for index,info in enumerate(read):
    if index !=0:  #這裡判斷
      print(info)

讀取前10行

filename='D:\\file_information1.csv'
with open(filename,info in enumerate(read):
    if index <10: #這裡為索引,是 int 整形
      print(index,info)

讀取任意行,可根據index索引

import csv
filename='D:\\file_information1.csv'
with open(filename,info in enumerate(read):
    print(index) #自己根據index的數字判斷

讀取第一和第二列

import csv
filename='D:\\file_information1.csv'
with open(filename,encoding='utf-8')as f:
  read=csv.reader(f)
  for index,info in enumerate(read):
      #這裡輸出的是列表型別
      print(info[:2])  #[:2]代表的是讀取第0列和第1列 ,第2列不包括

讀取除首行之外的第一,第二列

import csv
filename='D:\\file_information1.csv'
with open(filename,info in enumerate(read):
    if index!=0:  #這裡加判斷
      print(info[:2])

讀取最後兩列

import csv
filename='D:\\file_information1.csv'
with open(filename,info in enumerate(read):
      print(info[-2:])

讀第一行的第三列

filename='D:\\file_information1.csv'
with open(filename,info in enumerate(read):
    if index==0:
      print(info[2:3])

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。