我在阅读这样的表格时遇到问题:
$TITLE = 1
$SUBTITLE= 2
$LABEL = SUBCASE - STATIC LOADS 1 3
$DISPLACEMENTS 4
$REAL OUTPUT 5
$SUBCASE ID = 1 6
1 G 1.100698E-02 1.961111E-03 -1.888102E-01 7
-CONT- 0.000000E+00 0.000000E+00 0.000000E+00 8
2 G 1.099767E-02 1.947526E-03 -1.814562E-01 9
-CONT- 0.000000E+00 0.000000E+00 0.000000E+00 10
3 G 1.097209E-02 1.915010E-03 -1.741153E-01 11
-CONT- 0.000000E+00 0.000000E+00 0.000000E+00 12
4 G 1.093050E-02 1.873149E-03 -1.667979E-01 13
-CONT- 0.000000E+00 0.000000E+00 0.000000E+00 14
5 G 1.087178E-02 1.827145E-03 -1.595153E-01 15
-CONT- 0.000000E+00 0.000000E+00 0.000000E+00 16
我想让它看起来像这样:
1.100698E-02 1.961111E-03 -1.888102E-01 0.000000E+00 0.000000E+00 0.000000E+00
1.099767E-02 1.947526E-03 -1.814562E-01 0.000000E+00 0.000000E+00 0.000000E+00
1.097209E-02 1.915010E-03 -1.741153E-01 0.000000E+00 0.000000E+00 0.000000E+00
1.093050E-02 1.873149E-03 -1.667979E-01 0.000000E+00 0.000000E+00 0.000000E+00
1.087178E-02 1.827145E-03 -1.595153E-01 0.000000E+00 0.000000E+00 0.000000E+00
所以我试了好几种方法,但总有一些问题
首先,我尝试通过numpy.loadtxt加载数据,并省略标题行。但我在获取正确的数据类型时遇到了问题。当我用dtype=string读入它时,我无法再正确地将它转换为float
PunchData=loadtxt(PunchFile,skiprows=6)
ValueError: could not convert string to float: G
之后,我尝试使用genfromtxt来填充所有的空列,这样他就可以将其作为二次数组来读取。但我无法使其工作,因为列数不匹配->;number和G生成2列,-cont-生成1列
kwargs=dict(dtype=float,
跳过标题=6,
缺少值={0:“”,1:“”,2:“”,3:“”,4:“”,5:”“},
填充值={0:0,1:0,2:0,3:0,4:0,5:0})
PunchData=genfromtxt(PunchFile,**kwargs)
ValueError: Some errors were detected !
Line #8 (got 5 columns instead of 6)
Line #10 (got 5 columns instead of 6)
Line #12 (got 5 columns instead of 6)
Line #14 (got 5 columns instead of 6)
Line #16 (got 5 columns instead of 6)
作为最后一种方法,我尝试用readlines读取数据,但结果与第一种方法相同。我得到了一些字符串,但我无法将其转换为numpy数组
f=打开(PunchFile)
行=f.readlines()
线条=线条[6:]
数据=[]
对于行中的行:
data.append(第[24:])
['1.100698E-02 1.961111E-03 -1.888102E-01 7\n',
'0.000000E+00 0.000000E+00 0.000000E+00 8\n',
'1.099767E-02 1.947526E-03 -1.814562E-01 9\n',
'0.000000E+00 0.000000E+00 0.000000E+00 10\n',
'1.097209E-02 1.915010E-03 -1.741153E-01 11\n',
'0.000000E+00 0.000000E+00 0.000000E+00 12\n',
'1.093050E-02 1.873149E-03 -1.667979E-01 13\n',
'0.000000E+00 0.000000E+00 0.000000E+00 14\n',
'1.087178E-02 1.827145E-03 -1.595153E-01 15\n',
'0.000000E+00 0.000000E+00 0.000000E+00 16']
所以我真的很挣扎,不知道怎么继续下去。你们能帮帮我吗
只需手工处理即可。您的行包含固定大小的字段,后缀是行号,前缀可以是:
所以你必须:
$
开头的行-CONT-
开头的行连接到上一行,但跳过其中的18个字符-CONT-
开头的行中的24个字符它产生以下代码:
相关问题 更多 >
编程相关推荐