CSV-файл содержит такие значения, как "", "ab, abc" ,, "abc". Обратите внимание, я имею в виду пустое значение, как в неизвестном значении. Это отличается от "", где значение еще не было установлено. Я отношусь к этим двум ценностям по-разному.
Мне нужен способ читать "" и пустое значение, и различать их. Я сопоставляю данные с числами так, что "" сопоставляется с 0, а ,, сопоставляется с NaN.
Обратите внимание, что у меня нет проблемы с синтаксическим анализом, и поле, такое как "ab, abc", отлично разбирается с запятой в качестве разделителя. Проблема в том, что python читает "" и пустое значение, в виде пустой строки, такой как ''. И эти два значения не одинаковы и не должны быть сгруппированы в пустую строку.
Не только это, но мне также нужно написать CSV-файл так, чтобы "" записывался как "", а не ,, а NaN должен записываться как ,, (пустое значение).
Я изучил диалекты csv, такие как двойная кавычка, escapechar, quotechar, цитирование. Это НЕ то, что я хочу. Во всех этих случаях в данных появляется разделитель, т. Е. «Ab, abc», и, как я уже говорил, разбор со специальными символами не является проблемой.
Я не хочу использовать Панд. Единственное, о чем я могу думать, это регулярное выражение? Но это лишние затраты, если мне нужно обработать миллионы строк.
Мне нужно следующее поведение:
a = "\"\"" (or it could be a="" or a="ab,abc")
if (a=="\"\""):
map[0]=0
elif(a==""):
map[0]=np.nan
else:
map[0] = a
Мой CSV-ридер выглядит следующим образом:
import csv
f = open(filepath, 'r')
csvreader = csv.reader(f)
for row in csvreader:
print(row)
Я хочу выше поведение при чтении CSV-файлов, хотя. в настоящее время считываются только два значения: '' (пустая строка) или 'ab, abc'.
Я хочу прочитать 3 разных значения. '' пустая строка, '' '' строка с двойными кавычками и фактическая строка 'ab, abc'