我正在尝试使用pandas创建ETL管道,并将数据CSV化,但我在一些转义字符方面遇到了问题。
例如,如果我的数据是'\"',并且定义的escapechar是'\',带有quotechar '"',当我读取文件时,我的数据变成了"\ ",缺少一个escapechar。
例如,如果我的数据是'\"',并且定义的escapechar是'\',带有quotechar '"',当我读取文件时,我的数据变成了"\ ",缺少一个escapechar。
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文本。
是否有人遇到过这个问题?
pd.read_csv(your_parameters, encoding='utf-8')
- Carlo Zanocco