«Пустые элементы» составляют 0xa0
байт;неразрывные пробелы в Latin-1, но пробелы тем не менее, поэтому они str.split
.
рассматриваются как пробелы. Вот хакерский обходной путь, который работает:
with open("Output2.dat", "rb") as f: # binary mode
df = pd.DataFrame(
[e.decode("latin-1") if e != b'\xa0' else None for e in l.strip().split()]
for l in f
)
Вот яоткрытие файла в двоичном режиме, потому что bytes.split
игнорирует это специальное пространство. Когда я его обнаруживаю, я также заменяю его на None
, чтобы в пустых ячейках не было странных символов.
Я предполагаю кодировку latin-1, потому что 0xa0
сам по себе является недопустимым UTF-8, но вам может потребоваться заменить его на windows-1252
или другой кодировкой, в зависимости от того, откуда поступают эти данные.