Я использую pandas для загрузки файлов csv, созданных excel, сделайте некоторый анализ, а затем сохраните результаты в csv-файлах. Я заметил, что методы pandas to_csv и from_csv не способны обрабатывать специальные символы, такие как \ r, но также не создают никаких ошибок.Проблемы со специальными символами ( r) при записи и чтении файлов csv
In [7]: import pandas as pd
In [8]: data = {
'A': ['one', 'two', 'three'],
'B': ['four', 'five', 'six']
}
In [9]: df = pd.DataFrame(data)
In [10]: df
Out[10]:
A B
0 one four
1 two five
2 three six
In [11]: df.loc[1,'A'] = 't' + '\r' + 'o'
In [12]: df
Out[12]:
A B
0 one four
1 t\ro five
2 three six
In [13]: df.to_csv("my_df.csv")
In [14]: df2 = pd.DataFrame.from_csv("my_df.csv")
In [15]: df2
Out[15]:
A B
0 one four
1 t NaN
o five NaN
2 three six
Поскольку я не уточняя любую кодировку здесь я предполагаю, что он использует ASCII, но даже если я указываю кодировку = «UTF-8» для записи и чтения я получаю тот же результат.
Как написать надежный скрипт записи и чтения csv, чтобы строки/столбцы не были повреждены или произошли другие непредвиденные события? Если единственное решение - проверить и «очистить» каждую строку перед записью в csv, то что это самый простой способ сделать это?
CSV является довольно дикий формат с тонны диалектов. RFC 4180 пытается определить его. Там. Возврат каретки ('\ r') не допускается внутри блока TEXTDATA. Это часть линейного (рекордного) деминера. –