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, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
#  普通for循環:
i = 0
seq = ['one', 'two', 'three']
for element in seq:
    print( i, seq[i])
    i +=1
'''
0 one
1 two
2 three
'''

# for 循環使用 enumerate seq1 = ['one', 'two', 'three'] for j, element in enumerate(seq1): print (j, element) ''' 0 one 1 two 2 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,'r',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,'r',encoding='utf-8')as f:
    read=f.readlines()
    for index,info in enumerate(read):
        if index <10:  #這里為索引,是 int 整形
            print(index,info)
 
        
 

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

import csv
filename='D:\\file_information1.csv'
with open(filename,'r',encoding='utf-8')as f:
    read=f.readlines()
    for index,info in enumerate(read):
        print(index)  #自己根據index的數字判斷

#讀取第一和第二列

 

import csv
filename='D:\\file_information1.csv'
with open(filename,'r',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,'r',encoding='utf-8')as f:
    read=csv.reader(f)
    for index,info in enumerate(read):
        if index!=0:   #這里加判斷
            print(info[:2])

#讀取最后兩列

import csv
filename='D:\\file_information1.csv'
with open(filename,'r',encoding='utf-8')as f:
    read=csv.reader(f)
    for index,info in enumerate(read):
            print(info[-2:])

#讀第一行的第三列

filename='D:\\file_information1.csv'
with open(filename,'r',encoding='utf-8')as f:
    read=csv.reader(f)
    for index,info in enumerate(read):
        if index==0:
            print(info[2:3])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM