Python数组为只读,无法追加值

cbwuti44  于 2022-12-28  发布在  Python
关注(0)|答案(4)|浏览(263)

我是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行,位于e_rcs. append =浮点型(列组(2))中属性错误:"list"对象属性"append"是只读属性(分配给. append)

xdyibdwo

xdyibdwo1#

你正在给append()函数赋值,你想调用.append(float(cols.group(2)))。

kx5bkwkv

kx5bkwkv2#

是否要追加到数组?

e_rcs.append( float(cols.group(2)) )

执行此操作:e_rcs.append = float(cols.group(2))将数组e-rcsappend方法替换为浮点值,这是您很少想做的事情。

lh80um4z

lh80um4z3#

append是一个方法。您试图覆盖它而不是调用它。

e_rcs.append(float(cols.group(2)))
dgiusagp

dgiusagp4#

试试这个:

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中的普通字节数组。
如果你要做大量的科学数据分析,那么你应该看看NumPy模块,它支持n维数组。在数学和数据分析中,可以把NumPy看作FORTRAN的替代品。

相关问题