我有一个表的文本文件,其中有一个唯一的分隔符和一组唯一的字符来标记每行的末尾。
例如。用#%#
标记的新列用##@##
标记的新行
所以文本文件可能会读。。。
cat#%#dog#%#rat#%#cow##@##red#%#blue#%#green#%#yellow##@##north#%#south#%#east#%#west
它应该读作一个有3行4列的表,在加载过程中我可以在其中添加列名。
红色 | 蓝色 | 绿色 | north | south | east | est
我想正如matheubv所指出的,使用pd.read_csv
无法解决此问题。然而,这可以很容易地修复几行代码。只需打开文件(在示例sample.csv
中(并解析它(使用字符串方法.replace()
(。之后,您可以通过非常基本的列表理解来读入data_string
中当前保存为字符串的数据。
希望这项工作能帮助你
import pandas as pd
from pathlib import Path
p = Path("Data/sample.csv")
with p.open() as f:
string_data = f.readline().replace('#%#',';').replace('##@##','n')
df = pd.DataFrame([x.split(';') for x in string_data.split('n')])
print(df)
输出:
0 1 2 3
0 cat dog rat cow
1 red blue green yellow
2 north south east west
根据官方文件
行终止符:str(长度1(,可选将文件分成行的字符。仅对C语法分析器有效。
因此,我认为您最好的选择是在使用read_csv之前打开文本文件并替换行终止符。