My research data is not a normal file. The column number of each row may be different. I want to convert the "dat" file into "*.csv" file using Perl because it can run efficiently (I have poor experience in Python). Below is the script I ran. It works fine in Linux, but it does not output the context in Python scripts.
new_dat_file="14689_bondlength.prmfrm.dat"
new_csv_file="14689_bondlength.prmfrm.csv"
perl -p -e 's/\\t\s+|\s+/,/g' $new_dat_file |perl -p -e 's/,FRAM/\\nFRAM/g' > $new_csv_file
Above codes work in Linux. I improved them in Python scripts. If I use below command
import os
new_dat_file="14689_bondlength.prmfrm.dat"
new_csv_file="14689_bondlength.prmfrm.csv"
cmd = "perl -p -e 's/\\t\s+|\s+/,/g' " + new_dat_file + " |perl -p -e 's/,FRAM/\\nFRAM/g'
os.system(cmd)
I can see the output correctly. However, if I modify cmd values like below to save the output into a csv file, but I got an empty file.
cmd = "perl -p -e 's/\\t\s+|\s+/,/g' " + new_dat_file + " |perl -p -e 's/,FRAM/\\nFRAM/g' > " + new_csv_file
How can I fix this issue? If I cannot do so, any other alternative way available? Any further suggestion would be highly appreciated.
BTW: partial data listed below
FRAM_# 0 0(fs) CN= 1 PRMRYTGT 14689 H 15449 O 1.008
FRAM_# 100 25(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.955
FRAM_# 200 50(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.993
FRAM_# 300 75(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.973
FRAM_# 400 100(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.988
FRAM_# 500 125(fs) CN= 1 PRMRYTGT 14689 H 15449 O 1.033
FRAM_# 600 150(fs) CN= 1 PRMRYTGT 14689 H 15449 O 1.032
FRAM_# 700 175(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.986
FRAM_# 800 200(fs) CN= 1 PRMRYTGT 14689 H 15449 O 1.061
FRAM_# 900 225(fs) CN= 1 PRMRYTGT 14689 H 15449 O 1.078
FRAM_# 1000 250(fs) CN= 1 PRMRYTGT 14689 H 15449 O 0.922
FRAM_# 1100 275(fs) CN= 2 PRMRYTGT 14689 H 17402 O 1.257 15449 O 1.430
FRAM_# 303200 75800(fs) CN= 0 PRMRYTGT_BD 14689 H
FRAM_# 921200 230300(fs) CN= 1 PRMRYTGT_BD 14689 H 8375 O 1.062
FRAM_# 1078700 269675(fs) CN= 1 PRMRYTGT_BD 14689 H 12971 O 1.507
FRAM_# 18203400 4550850(fs) CN= 1 PRMRYTGT_BD 14689 H 16172 O 1.507
I hope to get output like below:
FRAM_#,0,0(fs),CN=,1,PRMRYTGT,14689,H,15449,O,1.008
FRAM_#,100,25(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.955
FRAM_#,200,50(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.993
FRAM_#,300,75(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.973
FRAM_#,400,100(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.988
FRAM_#,500,125(fs),CN=,1,PRMRYTGT,14689,H,15449,O,1.033
FRAM_#,600,150(fs),CN=,1,PRMRYTGT,14689,H,15449,O,1.032
FRAM_#,700,175(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.986
FRAM_#,800,200(fs),CN=,1,PRMRYTGT,14689,H,15449,O,1.061
FRAM_#,900,225(fs),CN=,1,PRMRYTGT,14689,H,15449,O,1.078
FRAM_#,1000,250(fs),CN=,1,PRMRYTGT,14689,H,15449,O,0.922
FRAM_#,1100,275(fs),CN=,2,PRMRYTGT,14689,H,17402,O,1.257,15449,O,1.430