удаление управляющих / скрытых / непечатаемых символов из файла csv при выполнении read_csv в pandas - PullRequest
1 голос
/ 26 мая 2020

Я пробовал различные ранее заданные вопросы, и пока ни один из них не помог. У меня есть файлы csv, которые я собираюсь загрузить в pandas. Я пробовал ниже:

import pandas as pd
ONTs=pd.read_csv("myfile.csv", sep="|", error_bad_lines=False,usecols=[*range(0,10)], index_col=False)
ONTs.columns=["ONTID","OPSTATE","ADMIN","RANGED","EQPT","DESC1","DESC2","SLID","ACTSW","SERIAL"]

Некоторые столбцы показывают «Nans», хотя на самом деле они имеют значения в CSV. Я полагал, что в некоторых строках есть некоторые (скрытые, непечатаемые, управляющие) символы, такие как « ^ M (5e 4d в шестнадцатеричном формате) », которые обрабатываются как символы новой строки? . Ниже приведен пример строки, в которой столбцы разделены знаком «|».

702-KMISR:R1.S1.LT4.PON8.ONT77|Up|Unlocked|Yes||MOSABCsa4-ONT2|172317233|17-231-7233^M|ACTSW|DISABLED|MYSNB3665846|11.2|-27.2|PASSive|ACTSW|

Я пробовал ниже, используя sed, и он удаляет плохой символ, и я могу загрузить файл в pandas без проблем:

sed -i 's/^M//g' myfile.csv

здесь ^M не является символом, который я мог бы ввести, но мне пришлось нажимать буквальные клавиши Control+V и Control+M, чтобы создать этот символ в командной строке.

Обновление :: Я решил, что ^ M на самом деле "\ r". и я смог ничего не заменить, используя sed. Я думаю, было бы легко заменить '\ r', если файл читается как двоичный. возможно ли такое (чтение как двоичный) в методе pandas read_csv?

Эти файлы csv содержат миллионы строк, и эти нежелательные символы распределены по разным столбцам случайным образом. Мне нужно знать:

1: почему такие персонажи создают проблемы при "|" это разделитель?

2: как удалить плохие символы из файлов csv в python?

3: можно ли обрабатывать такой файл / данные при загрузке файла в pandas , вместо отдельного удаления таких символов и последующего чтения csv?

...