将txt文件读取到具有唯一分隔符和行尾的panda数据帧



我有一个表的文本文件,其中有一个唯一的分隔符和一组唯一的字符来标记每行的末尾。

例如。用#%#标记的新列用##@##标记的新行

所以文本文件可能会读。。。

cat#%#dog#%#rat#%#cow##@##red#%#blue#%#green#%#yellow##@##north#%#south#%#east#%#west

它应该读作一个有3行4列的表,在加载过程中我可以在其中添加列名。

est
红色蓝色绿色northsoutheast

我想正如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之前打开文本文件并替换行终止符。

最新更新