我是Python新手。以下代码在尝试将值附加到数组时导致错误。我做错了什么?
import re
from array import array
freq_pattern = re.compile("Frequency of Incident[\(\)A-Za-z\s]*\.*\s*([\.0-9]*)")
col_pattern = re.compile("([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)")
e_rcs = array('f')
f = open('example.4.out', 'r')
for line in f:
print line,
result = freq_pattern.search(line)
if result:
freq = float(result.group(1))
cols = col_pattern.search(line)
if cols:
e_rcs.append = float(cols.group(2))
f.close()
错误
追踪(最近的呼叫最后):
文件“D:\ workspace \ CATS Parser \ cats-post.py“,第31行,in e_rcs.append = float(cols.group(2))AttributeError: 'list'对象属性'append'是 只读属性(分配给.append)
答案 0 :(得分:6)
你想附加到数组吗?
e_rcs.append( float(cols.group(2)) )
执行此操作:e_rcs.append = float(cols.group(2))
使用浮点值替换数组append
的{{1}}方法。很少有你想做的事。
答案 1 :(得分:6)
您要分配给append()函数,而是要调用.append(float(cols.group(2)))。
答案 2 :(得分:3)
追加是一种方法。你试图覆盖它而不是调用它。
e_rcs.append(float(cols.group(2)))
答案 3 :(得分:0)
请改为尝试:
import re
freq_pattern = re.compile("Frequency of Incident[\(\)A-Za-z\s]*\.*\s*([\.0-9]*)")
col_pattern = re.compile("([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)")
e_rcs = [] # make an empty list
f = open('example.4.out', 'r')
for line in f:
print line,
result = freq_pattern.search(line)
if result:
freq = float(result.group(1))
cols = col_pattern.search(line)
if cols:
e_rcs.append( float(cols.group(2)) ) # add another float to the list
f.close()
在Python中,当你需要控制存储的二进制布局时,你只能使用array.array,即RAM中的普通字节数组。
如果您要进行大量的科学数据分析,那么您应该看一下支持n维数组的NumPy模块。可以将NumPy视为FORTRAN在数学和数据分析方面的替代品。