[英]Read txt file to pandas dataframe with unique delimiter and end of line
我有一个表格的文本文件,有一个唯一的分隔符和一组唯一的字符来标记每一行/行的结尾。
例如由#%#
标记的新列由##@##
标记的新行
所以文本文件可能会读...
cat#%#dog#%#rat#%#cow##@##red#%#blue#%#green#%#yellow##@##north#%#south#%#east#%#west
应该将其视为具有 3 行 4 列的表格,我可以在加载过程中添加列名。
猫 | 狗 | 鼠 | 奶牛 |
红色的 | 蓝色的 | 绿色 | 黄色 |
北 | 南 | 东方 | 西 |
我试过pd.read_csv(file_name.txt, delimiter="#*#", lineterminator = '##@##')
引擎作为 python 和 c,但 c 不能接受多个字符delimiter 和 python 不能接受 delimiter 和 lineterminator 的值。
我唯一的选择是读取文本文件、将分隔符和行尾值更改为单个字符、使用 read_csv 保存并再次读取吗?
根据官方文档
lineterminator : str (length 1), 可选字符将文件分成几行。 仅对 C 解析器有效。
因此,我认为您最好的选择是在使用 read_csv 之前打开文本文件并替换行终止符。
我想正如 matheubv 所指出的那样,没有办法用pd.read_csv
解决这个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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.