π ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ CSV ΡΠ°ΠΉΠ»Π° Π½Π° UTF-8 Π² Python: ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π³Π°ΠΉΠ΄! π
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ CSV ΡΠ°ΠΉΠ»Π° Π½Π° UTF-8 Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ csv ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ codecs.
import csv
import codecs
input_file = 'ΠΈΠΌΡ_Π²Π°ΡΠ΅Π³ΠΎ_ΡΠ°ΠΉΠ»Π°.csv'
output_file = 'Π½ΠΎΠ²ΠΎΠ΅_ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°.csv'
# ΠΡΠΊΡΠΎΠ΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ
with codecs.open(input_file, 'r', encoding='ΡΡΠ°ΡΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°') as file:
# ΠΡΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°
data = file.read()
# ΠΡΠΊΡΠΎΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ UTF-8
with codecs.open(output_file, 'w', encoding='utf-8') as file:
# ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² UTF-8
file.write(data)
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ "ΠΈΠΌΡ_Π²Π°ΡΠ΅Π³ΠΎ_ΡΠ°ΠΉΠ»Π°.csv" Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ CSV ΡΠ°ΠΉΠ»Π° ΠΈ "ΡΡΠ°ΡΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°" Π½Π° ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "Π½ΠΎΠ²ΠΎΠ΅_ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°.csv" ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ UTF-8.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ CSV ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² Python, Π²Π°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ. CSV ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° Π½Π° UTF-8.
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ CSV ΡΠ°ΠΉΠ»Π° Π½Π° UTF-8 Π² Python ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ csv Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ codecs. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import csv
import codecs
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» CSV Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ
with codecs.open('input.csv', 'r', encoding='latin-1') as file:
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ CSV ΡΠ°ΠΉΠ»Π°
reader = csv.reader(file)
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» CSV Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ UTF-8
with codecs.open('output.csv', 'w', encoding='utf-8') as outfile:
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ CSV Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
writer = csv.writer(outfile)
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΡ
Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ UTF-8
for row in reader:
writer.writerow(row)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» CSV Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ codecs ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, 'latin-1'). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ csv.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» CSV Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ codecs ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, 'utf-8'). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ CSV Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΡ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ UTF-8 Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ CSV.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» CSV Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ UTF-8.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ CSV ΡΠ°ΠΉΠ»Π° Π½Π° UTF-8 Π² Python. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅!