Python:将.exp解析为.csv

时间:2015-06-24 17:45:54

标签: python python-2.7 csv

我正在浏览.exp个文件的目录,从每个文件中提取我想要的信息,然后将其编译成.csv文件。它不够优雅,但现在是:

    outMCfile = open(os.path.join(workingDir,'output',date+'NeptuneCdSummary.csv'),'w+')
for fn in fileList:
    infile = os.path.join(workingDir,fn)

    tmpHeader = open(infile,'r').readlines()
    for line in tmpHeader:
        line = line.strip()
        if line.startswith('Date') == True:
            doa = line.split(' ')
            doa = doa[1]
            outMCfile.write(doa)
            outMCfile.write("\n")
        elif line.startswith('Run number') == True:
            run = line.split(':')
            run = run[1].strip()
            outMCfile.write(run)
            outMCfile.write("\n")
        elif line.startswith('Comment') == True:
            comment = line.split(':')
            comment = comment[1].strip()
            outMCfile.write(comment)
            outMCfile.write("\n")
        elif line.startswith('SampleType') == True:
            samType = line.split(':')
            samType = samType[1].strip()
            outMCfile.write(samType)
            outMCfile.write("\n")
        elif line.startswith('Cycle') == True:
            labels = line
            outMCfile.write(labels)
            outMCfile.write("\n")
        elif line.startswith('***') == True:
            summary = line
            outMCfile.write(summary)
            outMCfile.write("\n")

outMCfile.close()

for循环中的最后两个条件(以“Cycle”和“***”开头的行)宽22-32列(有些是索引,有些是浮点数) )。如何划分结果?我只是在输出CSV中为同一个单元格中的每一行获取了一长串数字。如果我使用line.split(),无论我在括号中使用哪个分隔符,都会得到TypeError

.exp中的源代码行(这一行都在一行中)如下所示: “***平均1.8101587019969535e-003 1.7032095329860594e-003 1.1496630243258965e-003 1.1713999855908471e-003 4.7688994577955489e-003 4.5573296301687650e-003 3.9930890896827012e-002 2.0829073529889563e-002 9.3939542591824787e-001 9.5234032647735734e-001 1.7299477345544945e + 000 2.5226638938456563 e + 000 3.8076954346734854e-001 1.8291027001438267e + 000 2.6616393017410958e + 000 4.0608176179586236e-001 1.5082949448806580e + 000 2.1780140681716909e-001 1.4703089782231224e-001“

但.csv中的输出不再具有空间分隔;它都在第一个单元格中,而我想要“***”,“Mean”,“##### ...”,“#### ...”,每个单元都有自己的单元格。

1 个答案:

答案 0 :(得分:0)

现在很明显,在所有以前的elif中你从列表中写了一个值,在最后两个你尝试将整个列表写入文件。您只能将字符串写入文件。再次将其转换为字符串:

auto uniquePtr = give_unique_ptr();
auto sharedPtr = std::shared_ptr<decltype(uniquePtr)::element_type>(std::move(uniquePtr));

或者更简单:

shared_ptr

假设逗号是您的csv分隔符