在 Python 中使用 CSV 文件非常簡單,Python 提供了內置的
csv
模塊來處理 CSV 文件。你可以使用csv
模塊來讀取、寫入和操作 CSV 文件中的數據。
基礎使用
讀取 CSV 文件
python
import csv# 打開 CSV 文件進行讀取
with open('file.csv', mode='r') as file:reader = csv.reader(file) # 創建 CSV 讀取器對象for row in reader:print(row) # 逐行打印 CSV 文件中的數據
寫入 CSV 文件
python
import csv# 寫入數據到 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file) # 創建 CSV 寫入器對象writer.writerows(data) # 將數據寫入到 CSV 文件
在這兩個示例中,首先需要導入 csv
模塊。使用 with open()
打開 CSV 文件并指定文件模式('r'
表示讀取,'w'
表示寫入)。然后使用 csv.reader()
或 csv.writer()
創建讀取器或寫入器對象。讀取器可以逐行讀取 CSV 文件的內容,寫入器可以將數據寫入到 CSV 文件中。
更多使用技巧
1. 處理不同格式的分隔符
有時 CSV 文件中的字段可能不是用逗號分隔的,可能會使用其他字符作為分隔符,比如制表符 \t
。你可以在讀取和寫入時指定不同的分隔符。
讀取不同分隔符的 CSV 文件:
# 使用制表符作為分隔符讀取 CSV 文件
with open('file.tsv', mode='r') as file:reader = csv.reader(file, delimiter='\t') # 指定分隔符為制表符for row in reader:print(row)
寫入不同分隔符的 CSV 文件:
# 使用分號作為分隔符寫入 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file, delimiter=';') # 指定分隔符為分號writer.writerows(data)
2. 處理包含引號的數據
有些 CSV 文件中的字段可能包含引號,這時在處理時可能會出現問題。你可以指定引號的處理方式,以便正確讀取包含引號的字段。
# 處理包含引號的數據
with open('file.csv', mode='r') as file:reader = csv.reader(file, quoting=csv.QUOTE_MINIMAL) # 指定引號處理方式for row in reader:print(row)
3. 處理文件編碼
在處理 CSV 文件時,特別是處理非英文字符時,確保指定文件的正確編碼方式,以免出現亂碼問題。
# 指定文件編碼方式
with open('file.csv', mode='r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:print(row)
4. 考慮使用 DictReader
和 DictWriter
除了 csv.reader()
和 csv.writer()
外,csv
模塊還提供了 csv.DictReader()
和 csv.DictWriter()
,它們可以將每一行數據作為字典進行處理,使用列標題作為字典的鍵。
# 使用 DictReader 讀取 CSV 文件
with open('file.csv', mode='r') as file:reader = csv.DictReader(file)for row in reader:print(row['Name'], row['Age'], row['Gender'])
python
# 使用 DictWriter 寫入 CSV 文件
fieldnames = ['Name', 'Age', 'Gender']
data = [{'Name': 'Alice', 'Age': 25, 'Gender': 'Female'},{'Name': 'Bob', 'Age': 28, 'Gender': 'Male'},{'Name': 'Cathy', 'Age': 22, 'Gender': 'Female'}
]with open('output.csv', mode='w', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)writer.writeheader()writer.writerows(data)
這些技巧可以幫助你更好地使用 csv
模塊處理不同格式的 CSV 文件,同時避免一些常見的問題,如分隔符問題、引號處理和文件編碼等。