我必须阅读一个CSV文件,其中有一些有趣的换行符进入数据帧。这是最有效的方法吗?
with open(fileToRead,'r') as file:
filedata = file.read().replace("#@#@#", "\n")
file.close()
df = pandas.read_csv(filepath_or_buffer=StringIO(filedata), sep='~')
代码有效,但我不确定这是最好的方法。
是否可以在不将文件存储到filedata
变量的情况下执行此操作?
答案 0 :(得分:0)
您也可以尝试使用以下代码,该代码将使用更“正常”的换行符复制数据。
with open('{}.clean'.format(fileToRead), 'w') as out_file:
with open(fileToRead, 'r') as in_file:
in_file_data = in_file.read().replace('#@#@#', '\n')
out_file.write(in_file_data)
df = pandas.read_csv('{}.clean'.format(fileToRead), sep='~')
但实际上,您目前使用的方法很好。
此外,正如@jonrsharpe所示,当您使用with
语句打开文件时,不需要显式关闭文件。一旦代码离开with
语句的范围,文件将自动关闭。