π§ ΠΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΈΡΠΎΠ½: ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ codecs. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import codecs
# ΠΡΠΊΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅
with codecs.open('ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°', 'r', 'ΡΠ΅ΠΊΡΡΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°') as file:
content = file.read()
# ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΉΠ» Π² Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ
with codecs.open('ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°', 'w', 'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°') as file:
file.write(content)
Π ΠΊΠΎΠ΄Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ "ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°", "ΡΠ΅ΠΊΡΡΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°" ΠΈ "Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°" Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ» "example.txt", ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· utf-8 Π² cp1251, ΡΠΎ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
import codecs
with codecs.open('example.txt', 'r', 'utf-8') as file:
content = file.read()
with codecs.open('example.txt', 'w', 'cp1251') as file:
file.write(content)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΈΡΠΎΠ½?
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² Python, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°. ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° - ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠ΅ Π΄Π°Π½Π½ΡΡ . Π Python 3.x, ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UNICODE, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΠΊΡΠ»ΡΡΡΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π°
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ·Π½Π°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅.
import chardet
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅
with open("file.txt", "rb") as file:
# Π§ΠΈΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
data = file.read()
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π°
result = chardet.detect(data)
current_encoding = result['encoding']
print(f"Π’Π΅ΠΊΡΡΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π°: {current_encoding}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ chardet, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° chardet Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ³Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π°, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΡΠΊΡΠΎΠ΅ΠΌ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΡΠΎΡΠΈΡΠ°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ°ΠΉΠ».
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ
with open("file.txt", "r+", encoding=current_encoding) as file:
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°
content = file.read()
# ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ
new_content = content.encode("ΠΆΠ΅Π»Π°Π΅ΠΌΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°").decode("ΠΆΠ΅Π»Π°Π΅ΠΌΠ°Ρ_ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°")
# ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π°
file.seek(0)
# ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ°ΠΉΠ»
file.write(new_content)
# ΠΠ±ΡΠ΅Π·Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ
file.truncate()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ encode Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊΠΈ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ decode Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΡΡΠΎΠΊΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π°, Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΈ ΠΎΠ±ΡΠ΅Π·Π°Π»ΠΈ ΡΠ°ΠΉΠ» Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° Π² Python. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ chardet, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π°, ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π£Π΄Π°ΡΠΈ!