for (var key in validation_messages) {
// skip loop if the property is from prototype
if (!validation_messages.hasOwnProperty(key)) continue;
var obj = validation_messages[key];
for (var prop in obj) {
// skip loop if the property is from prototype
if(!obj.hasOwnProperty(prop)) continue;
// your code
alert(prop + " = " + obj[prop]);
}
}
read_csv
принимает параметр encoding
для работы с файлами в разных форматах. В основном я использую read_csv('file', encoding = "ISO-8859-1")
или, альтернативно, encoding = "utf-8"
для чтения, и вообще utf-8
для to_csv
.
Вы также можете использовать псевдоним 'latin1'
вместо 'ISO-8859-1'
.
См. соответствующую документацию Pandas , примеры python docs в файлах csv и множество связанных вопросов здесь на SO.
Борясь с этим некоторое время и думал, что я опубликую по этому вопросу, поскольку это первый результат поиска. Добавление тега encoding = 'iso-8859-1 "в pandas read_csv не сработало, и не было никакой другой кодировки, продолжавшей давать UnicodeDecodeError.
Если вы передаете дескриптор файла в pd.read_csv (), вам нужно поместить атрибут encoding = в файл открытым, а не в read_csv. Очевидное в ретроспективе, но тонкая ошибка для отслеживания.
Самый простой из всех решений:
В возвышенном виде щелкните Файл -> Сохранить с кодировкой -> UTF-8
blockquote>Затем вы можете прочитать свой файл, как обычно:
import pandas as pd data = pd.read_csv('file_name.csv', encoding='utf-8')
EDIT 1:
Если есть много файлов, вы можете пропустить возвышенный шаг.
Просто прочитайте файл, используя
data = pd.read_csv('file_name.csv', encoding='utf-8')
и другие различные типы кодирования:
encoding = "cp1252" encoding = "ISO-8859-1"
Pandas позволяет указывать кодировку, но не позволяет игнорировать ошибки, чтобы не автоматически заменять оскорбительные байты. Таким образом, нет одного размера, соответствующего всем методам, но по-разному в зависимости от фактического варианта использования.
file_encoding = 'cp1252' # set file_encoding to the file encoding (utf8, latin1, etc.)
pd.read_csv(input_file_and_path, ..., encoding=file_encoding)
Latin1
, потому что она принимает любой возможный байт как вход (и преобразует его в символ Юникода того же кода): pd.read_csv(input_file_and_path, ..., encoding='latin1')
open
имеет (предполагая Python3), а read_csv
принимает файл, подобный объекту. Типичными параметрами ошибок, которые следует использовать здесь, являются 'ignore'
, которые просто подавляют оскорбительные байты или (ИМХО лучше) 'backslashreplace'
, который заменяет оскорбительные байты их защитой от обратного сбрасывания Python: file_encoding = 'utf8' # set file_encoding to the file encoding (utf8, latin1, etc.)
input_fd = open(input_file_and_path, encoding=file_encoding, errors = 'backslashreplace')
pd.read_csv(input_fd, ...)