我将代码编写如下,通过拆分提取所有表格数据。现在我想
通过删除表中间的文本来提取最后一列(值)数据。

    import re
    f_read = open('filename','r')
    f_write=open('filename','w')
    str='CEN/4'
    for line in f_read:
        m=re.search(str,line)
        if m:
           for line in f_read:      # loop over the rows
                if not line.strip():
                  continue
           line = line.split(' ',1)   # parse the columns
           print line
           f_write.writelines(line)


表看起来像这样,然后在每一列中都有值。现在我想删除文本并提取值。

        S T R E S S E S   I N   Q U A D R I L A T E R A L   E L E M E N T S   ( Q U A D 4 )        OPTION = BILIN

ELEMENT              FIBER            STRESSES IN ELEMENT COORD SYSTEM         PRINCIPAL STRESSES (ZERO SHEAR)
  ID      GRID-ID   DISTANCE        NORMAL-X      NORMAL-Y      SHEAR-XY      ANGLE        MAJOR         MINOR       VON MISES

  121      3423      342             4545          45435        4345           42353     3456456       67658          3435

最佳答案

如果我了解您的问题,则您的代码中有几处错误。值得注意的是,您不能以所示方式读写同一文件。使情况复杂化的是,存在嵌套的for循环,它们都从同一输入文件读取行。

这是一个修订版,通过写入一个单独的输出文件并在单个for循环的控制下进行所有操作来避免这些问题。我还复制了输入文件中的数据行,并更改了其中的所有数字,因此它们以9开头,因此将有多行数据用于测试。

import re

with open('filename','r') as f_read, open('filename2','w') as f_write:
    for line in (line.strip() for line in f_read):
        if re.search(r'^\d+', line):  # line starts with a number?
            columnar_data = ' '.join(line.split())
            print columnar_data
            f_write.write(columnar_data+'\n')


输出文件的内容(filename2):

121 3423 342 4545 45435 4345 42353 3456456 67658 3435
921 9423 942 9545 95435 9345 92353 9456456 97658 9435

关于python - 需要帮助以提取列数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15734139/

10-11 09:23
查看更多