Python 如何读取具有非常量的空格分隔值的文件
概率:1 这是文件。正如您所看到的,第3行和第12行有一个非常长的变量,它也由空格分隔,但属于同一“类型”。 我试过:Python 如何读取具有非常量的空格分隔值的文件,python,pandas,Python,Pandas,概率:1 这是文件。正如您所看到的,第3行和第12行有一个非常长的变量,它也由空格分隔,但属于同一“类型”。 我试过: TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE 0.0000 30.000 15.000 1 1 6.9488e+05 0.00 0.000 0.000 INITIAL 0.0000 30.000 15.000 1 1 6.9488e+
TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE
0.0000 30.000 15.000 1 1 6.9488e+05 0.00 0.000 0.000 INITIAL
0.0000 30.000 15.000 1 1 6.9488e+05 0.00 0.000 0.000 PreMS aperi=694884 t1=0 f1=0 R1=7.74028 R1/RLperi1=2.53155e-05 R1/a(1-e)=1.11389e-05 t2=0 f2=0 R2=5.02787 R2/RLperi2=2.25555e-05 R2/a(1-e)=7.23555e-06 R1+2/aperi=1.83745e-05
5.9523 27.735 14.912 2 1 7.3335e+05 0.00 0.000 0.000 TYPE_CHNGE
5.9611 27.663 14.912 4 1 7.3459e+05 0.00 0.004 0.000 TYPE_CHNGE
6.3588 14.790 14.903 4 1 1.0562e+06 0.00 0.004 0.000 q-inv
6.4755 10.469 14.901 7 1 1.2381e+06 0.00 0.000 0.000 TYPE_CHNGE
6.6301 9.158 14.897 8 1 1.3065e+06 0.00 0.000 0.000 TYPE_CHNGE
6.6595 8.857 14.897 14 1 0 -1.00 0.000 0.000 TYPE_CHNGE
6.6595 8.857 14.897 14 1 0 -1.00 0.000 0.000 DISRUPT
6.6595 8.857 14.897 14 1 0 -1.00 0.000 0.000 SN
6.6595 8.857 14.897 14 1 0 -1.00 0.000 0.000 kick vk=392.824 vr=1.84982 theta=6.21052 phi=-0.146541 -> vn=390.999
6.6595 8.857 14.897 14 1 0 -1.00 0.000 0.000 BEG_SYMB
12.7530 8.857 14.654 14 2 0 -1.00 0.000 0.000 OFF_MS
12.7530 8.857 14.654 14 2 0 -1.00 0.000 0.000 TYPE_CHNGE
12.7795 8.857 14.648 14 4 0 -1.00 0.000 0.000 TYPE_CHNGE
14.2105 8.857 10.438 14 5 0 -1.00 0.000 0.000 TYPE_CHNGE
14.2653 8.857 1.912 14 14 0 -1.00 0.000 0.000 TYPE_CHNGE
14.2653 8.857 1.912 14 14 0 -1.00 0.000 0.000 BEG_SYMB
14.2653 8.857 1.912 14 14 0 -1.00 0.000 0.000 q-inv
14.2653 8.857 1.912 14 14 0 -1.00 0.000 0.000 SN
20000.0000 8.857 1.912 14 14 0 -1.00 0.000 0.000 MAX_TIME
但它抱怨说:
ParserError:标记数据时出错。C错误:第12行预期有41个字段,SAW43
如何读取长值由空格分隔但属于同一变量的文件?
非常感谢您的帮助 预处理到一个临时文件中,然后用pandas读取该文件
import pandas as pd
pd.read_csv('c_log2.dat', delimiter='delim_whitespace=True').
输出:
from io import StringIO
import pandas as pd
import re
for_pd = StringIO()
with open('ale.csv') as ale:
for line in ale:
line = re.subn(r'\s+', ',', line.strip(), 9)
print (line[0], file=for_pd)
for_pd.seek(0)
df = pd.read_csv(for_pd)
print (df.head())
TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 \
0 0.0000 30.000 15.000 1 1 694880.0 0.0 0.000 0.0
1 0.0000 30.000 15.000 1 1 694880.0 0.0 0.000 0.0
2 5.9523 27.735 14.912 2 1 733350.0 0.0 0.000 0.0
3 5.9611 27.663 14.912 4 1 734590.0 0.0 0.004 0.0
4 6.3588 14.790 14.903 4 1 1056200.0 0.0 0.004 0.0
TYPE
0 INITIAL
1 PreMS aperi=694884 t1=0 f1=0 R1=7.74028 R1/RLp...
2 TYPE_CHNGE
3 TYPE_CHNGE
4 q-inv