Я пытаюсь создать конвейер ETL с пандами и CSVing данными, но у меня возникают некоторые проблемы с некоторыми управляющими символами.
Если, например, мои данные '\ "' иопределен escape-символ '\' с кавычкой '"', когда я читаю файл, мои данные превращаются в" \ ", пропуская один escape-символ.
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
import csv
escape_char_defined = '\\'
quote_defined = '"'
separator = "|"
sample_data = []
for i in range(1,11):
sample_data.append(i*escape_char_defined + quote_defined)
initial_df = pd.DataFrame(sample_data,columns=['column'])
csv_text = initial_df.to_csv(sep=separator,columns=None,header=None,index=False,doublequote=False,quoting=csv.QUOTE_ALL,quotechar=quote_defined,escapechar=escape_char_defined,encoding='utf-8')
csv_text = StringIO(csv_text)
final_df = pd.read_csv(csv_text,sep=separator,escapechar=escape_char_defined,quoting=csv.QUOTE_ALL,header=None,doublequote=False,encoding='utf-8')
if not final_df.equals(initial_df):
raise Exception("Dataframes are not equal!")
Я не думаю, что это ожидаемое поведение, так как яиспользую те же инструменты для написания и чтения текста CSV.
У кого-нибудь уже есть проблемы с этим?