Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将部分文件文本读入数据帧_Python_Regex_Pandas_File Read - Fatal编程技术网

使用python将部分文件文本读入数据帧

使用python将部分文件文本读入数据帧,python,regex,pandas,file-read,Python,Regex,Pandas,File Read,例如,我有以下格式的数据文本: HEADER NODE DATA, AIR -10000, 15., -1.0 HEADER CONDUCTOR DATA, AIR 1, AIR.10000, S25D.1, 56.84441 $ AIR CONV 2, AIR.10000, S25D.2, 56.45712 $ AIR CONV

例如,我有以下格式的数据文本:

HEADER NODE DATA, AIR
            -10000,    15.,    -1.0
HEADER CONDUCTOR DATA, AIR
            1,    AIR.10000,    S25D.1,    56.84441         $ AIR CONV
            2,    AIR.10000,    S25D.2,    56.45712         $ AIR CONV
            3,    AIR.10000,    S25D.3,    53.35623         $ AIR CONV
            4,    AIR.10000,    S25D.4,    45.09633         $ AIR CONV
            5,    AIR.10000,    S25D.9,    77.00067         $ AIR CONV
            6,    AIR.10000,    S25D.10,    80.35013         $ AIR CONV
            7,    AIR.10000,    S25D.11,    50.4933         $ AIR CONV
            8,    AIR.10000,    S25D.12,    91.61026         $ AIR CONV
            9,    AIR.10000,    S25D.13,    53.75025         $ AIR CONV
            10,    AIR.10000,    S25D.14,    75.68577         $ AIR CONV
            11,    AIR.10000,    S25D.15,    110.0111         $ AIR CONV
            12,    AIR.10000,    S25D.16,    114.7913         $ AIR CONV
            13,    AIR.10000,    S25D.17,    81.12207         $ AIR CONV
            14,    AIR.10000,    S25D.18,    72.80061         $ AIR CONV
            15,    AIR.10000,    S25D.19,    72.21327         $ AIR CONV
            16,    AIR.10000,    S25D.20,    90.99183         $ AIR CONV
            17,    AIR.10000,    S25D.21,    66.35648         $ AIR CONV
            18,    AIR.10000,    S25D.22,    76.9787         $ AIR CONV
            19,    AIR.10000,    S25D.23,    52.46601         $ AIR CONV
            20,    AIR.10000,    S25D.24,    68.30105         $ AIR CONV
            21,    AIR.10000,    S25D.25,    114.0903         $ AIR CONV
            22,    AIR.10000,    S25D.26,    70.51425         $ AIR CONV
            23,    AIR.10000,    S25D.27,    36.39104         $ AIR CONV
            24,    AIR.10000,    S25D.28,    78.88668         $ AIR CONV
            25,    AIR.10000,    S25D.29,    70.77477         $ AIR CONV
            26,    AIR.10000,    S25D.30,    87.04871         $ AIR CONV
            27,    AIR.10000,    S25D.31,    64.50918         $ AIR CONV
            28,    AIR.10000,    S25D.32,    76.20373         $ AIR CONV
            29,    AIR.10000,    S25D.33,    90.69899         $ AIR CONV
            30,    AIR.10000,    S25D.34,    83.89708         $ AIR CONV
            31,    AIR.10000,    S25D.35,    88.59924         $ AIR CONV
            32,    AIR.10000,    S25D.36,    72.06826         $ AIR CONV
            33,    AIR.10000,    S25D.65,    157.6095         $ AIR CONV
            34,    AIR.10000,    S25D.66,    140.3513         $ AIR CONV
            35,    AIR.10000,    S25D.67,    215.1395         $ AIR CONV
            36,    AIR.10000,    S25D.68,    131.7191         $ AIR CONV
            37,    AIR.10000,    S25D.69,    173.7129         $ AIR CONV
            38,    AIR.10000,    S25D.70,    106.8654         $ AIR CONV
            39,    AIR.10000,    S25D.71,    153.2247         $ AIR CONV
            40,    AIR.10000,    S25D.72,    151.2406         $ AIR CONV
            41,    AIR.10000,    S25D.73,    136.0113         $ AIR CONV
            42,    AIR.10000,    S25D.74,    217.2005         $ AIR CONV
            43,    AIR.10000,    S25D.75,    121.0298         $ AIR CONV
            44,    AIR.10000,    S25D.76,    178.8008         $ AIR CONV
            45,    AIR.10000,    S25D.77,    160.7517         $ AIR CONV
            46,    AIR.10000,    S25D.78,    132.528         $ AIR CONV
            47,    AIR.10000,    S25D.79,    126.503         $ AIR CONV
            48,    AIR.10000,    S25D.80,    223.1756         $ AIR CONV
            49,    AIR.10000,    S25D.81,    151.6868         $ AIR CONV
            50,    AIR.10000,    S25D.82,    176.8964         $ AIR CONV
            51,    AIR.10000,    S25D.83,    155.6967         $ AIR CONV
            52,    AIR.10000,    S25D.84,    153.6341         $ AIR CONV
            53,    AIR.10000,    S25D.85,    110.9477         $ AIR CONV
            54,    AIR.10000,    S25D.86,    165.114         $ AIR CONV
            55,    AIR.10000,    S25D.87,    139.9079         $ AIR CONV
            56,    AIR.10000,    S25D.88,    137.9431         $ AIR CONV
            57,    AIR.10000,    S25D.89,    138.1562         $ AIR CONV
            58,    AIR.10000,    S25D.90,    204.7094         $ AIR CONV
            59,    AIR.10000,    S25D.91,    159.8541         $ AIR CONV
            60,    AIR.10000,    S25D.92,    174.5026         $ AIR CONV
            61,    AIR.10000,    S25D.93,    160.5398         $ AIR CONV
            62,    AIR.10000,    S25D.94,    143.0478         $ AIR CONV
            63,    AIR.10000,    S25D.95,    175.8055         $ AIR CONV
            64,    AIR.10000,    S25D.96,    99.97353         $ AIR CONV
            65,    AIR.10000,    S25D.97,    119.0528         $ AIR CONV
            66,    AIR.10000,    S25D.98,    147.533         $ AIR CONV
            67,    AIR.10000,    S25D.99,    122.7583         $ AIR CONV
            68,    AIR.10000,    S25D.100,    191.2955         $ AIR CONV
            69,    AIR.10000,    S25D.101,    197.3013         $ AIR CONV
            70,    AIR.10000,    S25D.102,    173.0556         $ AIR CONV
            71,    AIR.10000,    S25D.103,    193.2726         $ AIR CONV
            72,    AIR.10000,    S25D.104,    128.1502         $ AIR CONV
            73,    AIR.10000,    S25D.105,    102.519         $ AIR CONV
            74,    AIR.10000,    S25D.106,    180.8979         $ AIR CONV
            75,    AIR.10000,    S25D.107,    160.9948         $ AIR CONV
            76,    AIR.10000,    S25D.108,    197.6314         $ AIR CONV
            77,    AIR.10000,    S25D.109,    162.5766         $ AIR CONV
            78,    AIR.10000,    S25D.110,    143.3984         $ AIR CONV
            79,    AIR.10000,    S25D.111,    265.7273         $ AIR CONV
            80,    AIR.10000,    S25D.112,    90.36677         $ AIR CONV
            81,    AIR.10000,    S25D.113,    146.033         $ AIR CONV
            82,    AIR.10000,    S25D.114,    182.0126         $ AIR CONV
            83,    AIR.10000,    S25D.115,    142.1242         $ AIR CONV
            84,    AIR.10000,    S25D.116,    156.4711         $ AIR CONV
            85,    AIR.10000,    S25D.117,    263.3278         $ AIR CONV
            86,    AIR.10000,    S25D.118,    133.7923         $ AIR CONV
            87,    AIR.10000,    S25D.119,    134.4939         $ AIR CONV
            88,    AIR.10000,    S25D.120,    87.09295         $ AIR CONV
            89,    AIR.10000,    S25D.121,    168.8858         $ AIR CONV
            90,    AIR.10000,    S25D.122,    133.792         $ AIR CONV
            91,    AIR.10000,    S25D.123,    194.2227         $ AIR CONV
            92,    AIR.10000,    S25D.124,    116.8372         $ AIR CONV
            93,    AIR.10000,    S25D.125,    125.5161         $ AIR CONV
            94,    AIR.10000,    S25D.126,    54.22872         $ AIR CONV
我想把它读入熊猫数据框,以便进一步分析。 正如您所看到的,每个子集的标题都不同,数据的格式也不同。 我想使用re模块和pandas将数据读入框架,但不知道如何以最有效的方式进行。 正如您所看到的,空气管柱对于两个头部都是通用的。在完整的文件中会有更多这样的字符串,所以我想为每个字符串创建一个类,该类的属性(节点、导体)将是一个带有相应数据的pd数据帧

任何帮助都将不胜感激:)

编辑: 根据Alexandre的建议,我稍微修改了一段代码,但仍然没有找到将数据放入类中的方法

# import modules
import pandas as pd
from io import StringIO

class TableData:
    def __init__(self,name):
        self.name = name
        self.nodes_table = self.add_nodes()
        self.conductor_table = self.add_conductors()
    def add_nodes(self):
        pass
    def add_conductors(self):
        pass

out = []
submodels = set()
with open("case1.cc", "r") as f:
    sub = ""
    for line in f.readlines():
        if ("VARIABLES" in line) or ("OPTIONS" in line): # skip non relevant
                                                         # blocks
            continue
        if line.startswith('C'):  # skip comments line
            continue
        if ("HEADER" in line) and ("DATA" in line):
            # Get submodel name and add to set if not present
            submodels.add(line.split(',')[1])
            # Get type of data
            type = line.split()[1]
            # Skip first insertion
            if sub != "":
                out.append(sub)
                sub = ""
        else: sub += line
    # Append last sub (outside for loop)
    out.append(sub)

# "out" is a list of pandas dataframes
out = [pd.read_csv(StringIO(o), sep=r",*\s{2,}", header=None, engine="python") for o in out]

还有更完整的示例文件:

HEADER OPTIONS
C    SINDA Data generated with Thermal Desktop 6.0 Patch 2
C    Generated on Fri Sep 01 14:39:30 2017
C    From file: thermal.dwg
C    Case Set: Case Set 1
C    TDUNITS,   Energy   =    J
C    TDUNITS,   Time     =    sec
C    TDUNITS,   Temp     =    C
C    TDUNITS,   Mass     =    kg
C    TDUNITS,   Length   =    m
C    TDUNITS,   Orbit    =    km
C    TDUNITS,   Pressure =    Pa
C    TDUNITS,   Force    =    N
C    TDUNITS,   Angle    =    Degrees
C    TDUNITS,   Volt     =    volt
C    TDUNITS,   Current  =    amp
C    TDUNITS,   Resistance =   ohm
HEADER NODE DATA, AIR
            -10000,    15.,    -1.0
HEADER CONDUCTOR DATA, AIR
            1,    AIR.10000,    S25D.1,    56.84441         $ AIR CONV
            2,    AIR.10000,    S25D.2,    56.45712         $ AIR CONV
            3,    AIR.10000,    S25D.3,    53.35623         $ AIR CONV
            4,    AIR.10000,    S25D.4,    45.09633         $ AIR CONV
            5,    AIR.10000,    S25D.9,    77.00067         $ AIR CONV
            6,    AIR.10000,    S25D.10,    80.35013         $ AIR CONV
            7,    AIR.10000,    S25D.11,    50.4933         $ AIR CONV
            8,    AIR.10000,    S25D.12,    91.61026         $ AIR CONV
            9,    AIR.10000,    S25D.13,    53.75025         $ AIR CONV
            10,    AIR.10000,    S25D.14,    75.68577         $ AIR CONV
            11,    AIR.10000,    S25D.15,    110.0111         $ AIR CONV
            12,    AIR.10000,    S25D.16,    114.7913         $ AIR CONV
            13,    AIR.10000,    S25D.17,    81.12207         $ AIR CONV
            14,    AIR.10000,    S25D.18,    72.80061         $ AIR CONV
            15,    AIR.10000,    S25D.19,    72.21327         $ AIR CONV
            16,    AIR.10000,    S25D.20,    90.99183         $ AIR CONV
            17,    AIR.10000,    S25D.21,    66.35648         $ AIR CONV
            18,    AIR.10000,    S25D.22,    76.9787         $ AIR CONV
            19,    AIR.10000,    S25D.23,    52.46601         $ AIR CONV
            20,    AIR.10000,    S25D.24,    68.30105         $ AIR CONV
            21,    AIR.10000,    S25D.25,    114.0903         $ AIR CONV
            22,    AIR.10000,    S25D.26,    70.51425         $ AIR CONV
            23,    AIR.10000,    S25D.27,    36.39104         $ AIR CONV
            24,    AIR.10000,    S25D.28,    78.88668         $ AIR CONV
            25,    AIR.10000,    S25D.29,    70.77477         $ AIR CONV
            26,    AIR.10000,    S25D.30,    87.04871         $ AIR CONV
            27,    AIR.10000,    S25D.31,    64.50918         $ AIR CONV
            28,    AIR.10000,    S25D.32,    76.20373         $ AIR CONV
            29,    AIR.10000,    S25D.33,    90.69899         $ AIR CONV
            30,    AIR.10000,    S25D.34,    83.89708         $ AIR CONV
            31,    AIR.10000,    S25D.35,    88.59924         $ AIR CONV
            32,    AIR.10000,    S25D.36,    72.06826         $ AIR CONV
            33,    AIR.10000,    S25D.65,    157.6095         $ AIR CONV
            34,    AIR.10000,    S25D.66,    140.3513         $ AIR CONV
            35,    AIR.10000,    S25D.67,    215.1395         $ AIR CONV
            36,    AIR.10000,    S25D.68,    131.7191         $ AIR CONV
            37,    AIR.10000,    S25D.69,    173.7129         $ AIR CONV
            38,    AIR.10000,    S25D.70,    106.8654         $ AIR CONV
            39,    AIR.10000,    S25D.71,    153.2247         $ AIR CONV
            40,    AIR.10000,    S25D.72,    151.2406         $ AIR CONV
            41,    AIR.10000,    S25D.73,    136.0113         $ AIR CONV
            42,    AIR.10000,    S25D.74,    217.2005         $ AIR CONV
            43,    AIR.10000,    S25D.75,    121.0298         $ AIR CONV
            44,    AIR.10000,    S25D.76,    178.8008         $ AIR CONV
            45,    AIR.10000,    S25D.77,    160.7517         $ AIR CONV
            46,    AIR.10000,    S25D.78,    132.528         $ AIR CONV
            47,    AIR.10000,    S25D.79,    126.503         $ AIR CONV
            48,    AIR.10000,    S25D.80,    223.1756         $ AIR CONV
            49,    AIR.10000,    S25D.81,    151.6868         $ AIR CONV
            50,    AIR.10000,    S25D.82,    176.8964         $ AIR CONV
            51,    AIR.10000,    S25D.83,    155.6967         $ AIR CONV
            52,    AIR.10000,    S25D.84,    153.6341         $ AIR CONV
            53,    AIR.10000,    S25D.85,    110.9477         $ AIR CONV
            54,    AIR.10000,    S25D.86,    165.114         $ AIR CONV
            55,    AIR.10000,    S25D.87,    139.9079         $ AIR CONV
            56,    AIR.10000,    S25D.88,    137.9431         $ AIR CONV
            57,    AIR.10000,    S25D.89,    138.1562         $ AIR CONV
            58,    AIR.10000,    S25D.90,    204.7094         $ AIR CONV
            59,    AIR.10000,    S25D.91,    159.8541         $ AIR CONV
            60,    AIR.10000,    S25D.92,    174.5026         $ AIR CONV
            61,    AIR.10000,    S25D.93,    160.5398         $ AIR CONV
            62,    AIR.10000,    S25D.94,    143.0478         $ AIR CONV
            63,    AIR.10000,    S25D.95,    175.8055         $ AIR CONV
            64,    AIR.10000,    S25D.96,    99.97353         $ AIR CONV
            65,    AIR.10000,    S25D.97,    119.0528         $ AIR CONV
            66,    AIR.10000,    S25D.98,    147.533         $ AIR CONV
            67,    AIR.10000,    S25D.99,    122.7583         $ AIR CONV
            68,    AIR.10000,    S25D.100,    191.2955         $ AIR CONV
            69,    AIR.10000,    S25D.101,    197.3013         $ AIR CONV
            70,    AIR.10000,    S25D.102,    173.0556         $ AIR CONV
            71,    AIR.10000,    S25D.103,    193.2726         $ AIR CONV
            72,    AIR.10000,    S25D.104,    128.1502         $ AIR CONV
            73,    AIR.10000,    S25D.105,    102.519         $ AIR CONV
            74,    AIR.10000,    S25D.106,    180.8979         $ AIR CONV
            75,    AIR.10000,    S25D.107,    160.9948         $ AIR CONV
            76,    AIR.10000,    S25D.108,    197.6314         $ AIR CONV
            77,    AIR.10000,    S25D.109,    162.5766         $ AIR CONV
            78,    AIR.10000,    S25D.110,    143.3984         $ AIR CONV
            79,    AIR.10000,    S25D.111,    265.7273         $ AIR CONV
            80,    AIR.10000,    S25D.112,    90.36677         $ AIR CONV
            81,    AIR.10000,    S25D.113,    146.033         $ AIR CONV
            82,    AIR.10000,    S25D.114,    182.0126         $ AIR CONV
            83,    AIR.10000,    S25D.115,    142.1242         $ AIR CONV
            84,    AIR.10000,    S25D.116,    156.4711         $ AIR CONV
            85,    AIR.10000,    S25D.117,    263.3278         $ AIR CONV
            86,    AIR.10000,    S25D.118,    133.7923         $ AIR CONV
            87,    AIR.10000,    S25D.119,    134.4939         $ AIR CONV
            88,    AIR.10000,    S25D.120,    87.09295         $ AIR CONV
            89,    AIR.10000,    S25D.121,    168.8858         $ AIR CONV
            90,    AIR.10000,    S25D.122,    133.792         $ AIR CONV
            91,    AIR.10000,    S25D.123,    194.2227         $ AIR CONV
            92,    AIR.10000,    S25D.124,    116.8372         $ AIR CONV
            93,    AIR.10000,    S25D.125,    125.5161         $ AIR CONV
            94,    AIR.10000,    S25D.126,    54.22872         $ AIR CONV

HEADER VARIABLES 0, U1
C Heat Load-U1 POWER[U1]::DEA
      S67C.Q1 = S67C.Q1 + 27.77842
      S67C.Q2 = S67C.Q2 + 83.60381
      S67C.Q3 = S67C.Q3 + 54.82939
      S67C.Q4 = S67C.Q4 + 38.54834
      S67C.Q5 = S67C.Q5 + 27.77842
      S67C.Q6 = S67C.Q6 + 27.86794
      S67C.Q7 = S67C.Q7 + 54.82939
      S67C.Q8 = S67C.Q8 + 63.72669
      S67C.Q9 = S67C.Q9 + 112.6502
      S67C.Q10 = S67C.Q10 + 44.72019
      S67C.Q11 = S67C.Q11 + 56.17543
      S67C.Q12 = S67C.Q12 + 37.76753
      S67C.Q13 = S67C.Q13 + 41.53661
      S67C.Q14 = S67C.Q14 + 38.89015
      S67C.Q15 = S67C.Q15 + 56.3575
      S67C.Q16 = S67C.Q16 + 134.1606
      S67C.Q17 = S67C.Q17 + 112.4682
      S67C.Q18 = S67C.Q18 + 62.94588
      S67C.Q19 = S67C.Q19 + 124.6098
      S67C.Q20 = S67C.Q20 + 64.84931
      S67C.Q21 = S67C.Q21 + 173.5864
      S67C.Q22 = S67C.Q22 + 289.9135
      S67C.Q23 = S67C.Q23 + 173.7685
      S67C.Q24 = S67C.Q24 + 96.63783
HEADER NODE DATA, U2
HEADER CONDUCTOR DATA, U2
C Contact - Face Contactor-u2 contact[U2][1]::D4B
            1,    S25D.101,    SB82.2,    0.222749
            2,    S25D.101,    SB82.4,    4.481803
            3,    S25D.101,    SB82.11,    0.3112232
            4,    S25D.101,    SB82.12,    3.869354
            5,    S25D.101,    SB82.18,    0.1023536
            6,    S25D.101,    SB82.19,    1.919002
            7,    S25D.116,    SB82.2,    2.166497
            8,    S25D.116,    SB82.9,    0.1857799
            9,    S25D.116,    SB82.12,    0.2024991
            10,    S25D.116,    SB82.18,    0.2656026
            11,    S25D.117,    SB82.4,    0.3480346
            12,    S25D.117,    SB82.11,    0.4082713
            13,    S25D.117,    SB82.19,    0.04685081
            14,    S25D.123,    SB82.1,    6.771217
            15,    S25D.123,    SB82.2,    5.789176
            16,    S25D.123,    SB82.3,    7.999367
            17,    S25D.123,    SB82.4,    1.898946
            18,    S25D.123,    SB82.9,    9.955903
            19,    S25D.123,    SB82.10,    9.947601
            20,    S25D.123,    SB82.11,    9.160776
            21,    S25D.123,    SB82.12,    5.900825
            22,    S25D.123,    SB82.17,    14.49436
            23,    S25D.123,    SB82.18,    18.01836
            24,    S25D.123,    SB82.19,    12.362
            25,    S25D.123,    SB82.20,    18.17145
HEADER VARIABLES 0, U2
C Heat Load-u2 power[U2]::D3F
      SB82.Q1 = SB82.Q1 + 13.14304
      SB82.Q2 = SB82.Q2 + 24.73277
      SB82.Q3 = SB82.Q3 + 23.54379
      SB82.Q4 = SB82.Q4 + 13.10696
      SB82.Q5 = SB82.Q5 + 23.59044
      SB82.Q6 = SB82.Q6 + 13.11356
      SB82.Q7 = SB82.Q7 + 13.13522
      SB82.Q8 = SB82.Q8 + 23.62498
      SB82.Q9 = SB82.Q9 + 17.55859
      SB82.Q10 = SB82.Q10 + 25.07847
      SB82.Q11 = SB82.Q11 + 25.0472
      SB82.Q12 = SB82.Q12 + 25.0852
      SB82.Q13 = SB82.Q13 + 35.30753
      SB82.Q14 = SB82.Q14 + 25.07439
      SB82.Q15 = SB82.Q15 + 25.34528
      SB82.Q16 = SB82.Q16 + 25.05068
      SB82.Q17 = SB82.Q17 + 49.6953
      SB82.Q18 = SB82.Q18 + 45.39197
      SB82.Q19 = SB82.Q19 + 53.80839
      SB82.Q20 = SB82.Q20 + 33.80833
      SB82.Q21 = SB82.Q21 + 41.50079
      SB82.Q22 = SB82.Q22 + 33.93809
      SB82.Q23 = SB82.Q23 + 53.82713
      SB82.Q24 = SB82.Q24 + 36.49191
HEADER NODE DATA, U3
HEADER CONDUCTOR DATA, U3
C Contact - Face Contactor-u3 contact[U3][1]::D53
            1,    S25D.69,    SC04.6,    35.
            2,    S25D.69,    SC04.13,    67.97
            3,    S25D.69,    SC04.14,    66.71
            4,    S25D.69,    SC04.16,    8.82
            5,    S25D.80,    SC04.8,    34.72
            6,    S25D.80,    SC04.14,    0.49
            7,    S25D.80,    SC04.15,    38.78
            8,    S25D.80,    SC04.16,    37.31
            9,    S25D.100,    SC04.7,    35.
            10,    S25D.100,    SC04.13,    2.66
            11,    S25D.100,    SC04.14,    121.38
            12,    S25D.100,    SC04.15,    97.72
            13,    S25D.100,    SC04.16,    51.94
            14,    S25D.111,    SC04.5,    35.
            15,    S25D.111,    SC04.8,    0.28
            16,    S25D.111,    SC04.13,    69.37
            17,    S25D.111,    SC04.14,    21.42
            18,    S25D.111,    SC04.15,    3.5
            19,    S25D.111,    SC04.16,    111.93
HEADER VARIABLES 0, U3
C Heat Load-u3 power[U3]::D40
      SC04.Q1 = SC04.Q1 + 23.4375
      SC04.Q2 = SC04.Q2 + 31.25
      SC04.Q3 = SC04.Q3 + 15.625
      SC04.Q4 = SC04.Q4 + 31.25
      SC04.Q5 = SC04.Q5 + 23.4375
      SC04.Q6 = SC04.Q6 + 31.25
      SC04.Q7 = SC04.Q7 + 46.875
      SC04.Q8 = SC04.Q8 + 31.25
      SC04.Q9 = SC04.Q9 + 164.0625
      SC04.Q10 = SC04.Q10 + 218.75
      SC04.Q11 = SC04.Q11 + 140.625
      SC04.Q12 = SC04.Q12 + 101.5625
      SC04.Q13 = SC04.Q13 + 70.3125
      SC04.Q14 = SC04.Q14 + 156.25
      SC04.Q15 = SC04.Q15 + 109.375
      SC04.Q16 = SC04.Q16 + 257.8125
      SC04.Q17 = SC04.Q17 + 46.875
HEADER SUBROUTINE
      SUBROUTINE TDHTR
C     This routine is to hold heaters at their midpoint temps
C     for steady state solutions.
      RETURN
      END
      SUBROUTINE TDREL
C     This routine is to release heaters for transient runs
C     for steady state solutions.
F     RETURN
F     END
F     SUBROUTINE TDHTOT
C     This routine prints out heater ontime and cycle summaries
F     RETURN
F     END
F     SUBROUTINE TDHTRST
C     This routine resets heater statistics
F     RETURN
F     END
F     SUBROUTINE TDPREBL
C     This routine executes logic before the build statement
M     CALL COMMON
F     RETURN
F     END
F     SUBROUTINE TDPOSTBL
C     This routine executes logic after the build statement
M     CALL COMMON
F     RETURN
F     END
F     SUBROUTINE TDPOSTSL
C     This routine executes logic after the solution
M     CALL COMMON
F     RETURN
F     END
F     SUBROUTINE BASEPLOT
      CALL COMMON
F     RETURN
F     END

'''


您可以尝试以下方法:

  • 使用
    f.readlines()
  • 对于每一行,检查该行是否包含
    标题
    • 如果是这样,这意味着这是一个新的子df。将其添加到输出中
    • Else:将当前行附加到当前子数据
  • 将文本格式的
    sub
    df列表转换为数据帧。这就解释了为什么。注:
    • 使用的正则表达式是
      ,*\s{2,}
      ,这意味着:
      • 将任何“
        ”与“
        ,*
        ”匹配
      • 使用
        “\s{2,}
    • 参数
      header=None
      是必需的,或者第一行将用于添加列名称

  • 完整代码

    # import modules
    import pandas as pd
    from io import StringIO
    
    out = []
    with open("data.txt", "r") as f:
        sub = ""
        for line in f.readlines():
            if "HEADER" in line:
                # Skip first insertion
                if sub != "":
                    out.append(sub)
                    sub = ""
            else: sub += line
        # Append last sub (outside for loop)
        out.append(sub)
    
    # "out" is a list of pandas dataframes
    out = [pd.read_csv(StringIO(o), sep=r",*\s{2,}", header=None, engine="python") for o in out]
    print(out[0])
    #        0     1    2
    # 0 -10000  15.0 -1.0
    
    print(out[1])
    #      0          1         2          3           4
    # 0    1  AIR.10000    S25D.1   56.84441  $ AIR CONV
    # 1    2  AIR.10000    S25D.2   56.45712  $ AIR CONV
    # 2    3  AIR.10000    S25D.3   53.35623  $ AIR CONV
    # 3    4  AIR.10000    S25D.4   45.09633  $ AIR CONV
    # 4    5  AIR.10000    S25D.9   77.00067  $ AIR CONV
    # ..  ..        ...       ...        ...         ...
    # 89  90  AIR.10000  S25D.122  133.79200  $ AIR CONV
    # 90  91  AIR.10000  S25D.123  194.22270  $ AIR CONV
    # 91  92  AIR.10000  S25D.124  116.83720  $ AIR CONV
    # 92  93  AIR.10000  S25D.125  125.51610  $ AIR CONV
    # 93  94  AIR.10000  S25D.126   54.22872  $ AIR CONV
    
    # [94 rows x 5 columns]
    print(out[1].columns)
    # Int64Index([0, 1, 2, 3, 4], dtype='int64')
    

    希望有帮助!

    在第二个子集上,我看到5个数据列,但只有3个标题?每个数据列的标题是什么?标题不太重要,但为了示例起见,让我们假设有['id'、'node1'、'node2'、'value'、'comment'],只是为了弄清楚,标题只是说明下面是哪种类型的数据(节点、导体等)和集合名称(AIR)…谢谢!它成功了。但是,我仍在努力将我读取的数据分配到类的属性中,该类的名称是子集名称。在本例中,我想创建一个类`data=TableData('AIR')'哪些属性将是数据帧,他的self.name将是'AIR'。我已经编辑了您的代码并添加到我的答案中,以便更好地解释我自己。另外,请查看标题变量0 data。这是一种不同的格式,我只想将这种标题的数字(在'+'之后)复制到我的pd表中