Я пытаюсь открыть файл в кодировке latin-1, чтобы создать файл с другой кодировкой. Я получаю NameError, в котором указано, что unicode is not defined. Вот фрагмент кода, который я использую для этого:
sourceEncoding = "latin-1"
targetEncoding = "utf-8"
source = open(r'C:\Users\chsafouane\Desktop\saf.txt')
target = open(r'C:\Users\chsafouane\Desktop\saf2.txt', "w")
target.write(unicode(source.read(), sourceEncoding).encode(targetEncoding))
Я совсем не привык обрабатывать файлы, поэтому не знаю, есть ли модуль, который мне нужно импортировать, чтобы использовать "юникод".






Тот факт, что вы видите unicode not defined, предполагает, что вы используете Python3. Вот фрагмент кода, который сгенерирует файл с кодировкой latin1, а затем сделает то, что вы хотите, выплюнет файл с кодировкой latin1 и выплюнет файл с кодировкой UTF8:
# Generate a latin1-encoded file
txt = u'U+00AxNBSP¡¢£¤¥¦§¨©ª«¬SHY®¯U+00Bx°±²³´µ¶·¸¹º»¼½¾¿U+00CxÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏU+00DxÐÑÒÓÔÕÖרÙÚÛÜÝÞßU+00ExàáâãäåæçèéêëìíîïU+00Fxðñòóôõö÷øùúûüýþÿ'
latin1 = txt.encode('latin1')
with open('example-latin1.txt', 'wb') as fid:
fid.write(latin1)
# Read in the latin1 file
with open('example-latin1.txt', 'r', encoding='latin1') as fid:
contents = fid.read()
assert contents == latin1.decode('latin1') # sanity check
# Spit out a UTF8-encoded file
with open('converted-utf8.txt', 'w') as fid:
fid.write(contents)
Если вы хотите, чтобы вывод был отличным от UTF8, добавьте аргумент encoding в open, например,
with open('converted-utf_32.txt', 'w', encoding='utf_32') as fid:
fid.write(contents)
В документах есть список всех поддерживаемых кодеков.
И, чтобы уточнить, это Python2, верно? Поскольку Python3 не имеет функции
unicode(по умолчанию строки - UTF8).