如何对文本文件中的数字进行分类?

2024-09-30 14:30:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个5000行的文本文件。其格式如下:

1,3,4,1,2,3,5,build
2,6,4,6,7,3,4,demolish
3,6,10,2,3,1,3,demolish
4,4,1,2,3,4,5,demolish
5,1,1,1,1,6,8,build

我想制作不同的列表,例如: 第二列:

second_build=[3,1]
second_demolish=[6,6,4]

我试过这样的方法:

with open('cons.data') as file:
    second_build=[line.split(',')[1] for line in file if line.split(',')[7]=='build']

但它没有起作用


Tags: 方法build列表dataas格式withline
2条回答

只需首先将readlines设为变量,然后在列表中简单添加一个rstrip即可,因为值(最后一个除外)的末尾都有'\n',所以将其去掉,并将其设为整数:

with open('cons.data') as file:
    f=file.readlines()
    second_build=[int(line.split(',')[1]) for line in f if line.rstrip().split(',')[-1]=='build']
    second_demolish=[int(line.split(',')[1]) for line in f if line.rstrip().split(',')[-1]=='demolish']

现在:

print(second_build)
print(second_demolish)

是:

[3, 1]
[6, 6, 4]

可以按如下方式获取每个列/操作的值:

lines = """1,3,4,1,2,3,5,build
2,6,4,6,7,3,4,demolish
3,6,10,2,3,1,3,demolish
4,4,1,2,3,4,5,demolish
5,1,1,1,1,6,8,build""".split(
    "\n"
)

build_cols = [list() for _ in range(7)]
demolish_cols = [list() for _ in range(7)]
data = {"build": build_cols, "demolish": demolish_cols}

for line in lines:
    tokens = line.split(",")
    for bc, tok in zip(data[tokens[-1]], tokens):
        bc.append(tok)

# to access second column build values:
print(build_cols[1])
# ['3', '1']

例如,build_cols存储列表列表,每个条目表示一列。对于每个生成行,您将适当列中的项附加到build_cols中的相应位置

相关问题 更多 >