1

分割してすべての表形式データを抽出するコードを以下のように記述しました。今
、テーブルの真ん中にあるテキストを削除して、最後の列 (値) データを抽出したいと考えています。

    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
4

3 に答える 3

0

この場合、実際のケースでは、値を含む行が多数ある可能性が高いと思います (多数の要素 ID ごとに 1 行)。すべての値のみを出力するには、次のようなものをお勧めします。

import re
f_read = open('quad4.txt','r')
f_write=open('quad4.out','w')
str = 'GRID-ID'
for line in f_read: 
    m=re.search(str,line)
    if m:
        break

for line in f_read:   # loop over the rows
    line = line.strip()
    if line:
        vallist = line.split()   # parse the columns
        print (vallist)
        f_write.write("%s\n" % "\t".join(vallist)

これにより、「GRID-ID」を含む行が見つかるまでファイルが読み取られ、空でない行があれば分割され、タブ区切りの列に書き出されます。これにより、その後の処理が容易になります。vallistあるいは、上記のコードの最後から 3 行目で、値はさらに処理するのに便利な形式に分割されます。vallist値はまだ文字列であるため、それらを使用して計算を行う場合は、最初にintまたはfloat値に変換する必要があることに注意してください。

于 2013-03-31T21:00:24.090 に答える
0

あなたが何をしようとしているのか、私にはよくわかりません。しかし、そのファイルの最後の行からデータを読み込むことだけが必要な場合は、次のようにすることができます。

def read_last_line(file_path):
    f = open(file_path, 'r')
    lines = f.readlines()
    f.close()
    last_line = lines[-1].split()
    return last_line

lines[-1]配列の最後の要素を取得する簡単な方法であることに注意してください。この場合、その配列は、各要素がファイル内の行である配列です。これはあなたが探している重要なトリックかもしれないと思います。

于 2013-03-31T20:50:01.460 に答える