变量的参数?

2024-05-19 14:44:09 发布

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

我是python新手,我正在尝试用逗号','分隔值读取文件的每一行。就像这句话:

435,567,897,905,6,56,22,90.

我的现有代码

#!/usr/bin/python

class Line():
    def __init__(self, val1, val2, val3, val4, val5, val6, val7, val8):
        self.val1 = val1
        self.val2 = val2
        self.val3 = val3
        self.val4 = val4
        self.val5 = val5
        self.val6 = val6
        self.val7 = val7
        self.val8 = val8

    def display(self):
        print("CPU:",self.val1)

file = open("/Users/user/Desktop/data.txt", 'r')

for line in file:
 line = line.split(",")
 li = str(line)[1:-1]
 lin = Line(li)
 lin.display()

file.close()

data.txt如下所示

435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90
435,567,897,905,6,56,22,90

请帮助我如何打印像CPU:value这样的第一个值


Tags: selfdefdisplaylinecpufileval1val2
2条回答

您需要将每个line中的每个项传递给Line构造函数。一种方法是写:

li = Line(line[0], line[1], line[2], line[3], line[4], line[5], line[6], line[7]))

但这是一个很大的写作。Python有一个快捷方式:

li = Line(*line)

也会有同样的效果

不知道为什么要使用str(line)[1:-1]

无论如何,这意味着您的代码可以重新编写为如下所示,它还使用with语句,该语句将在循环后自动关闭文件:

class Line():
    def __init__(self, val1, val2, val3, val4, val5, val6, val7, val8):
        self.val1 = val1
        self.val2 = val2
        self.val3 = val3
        self.val4 = val4
        self.val5 = val5
        self.val6 = val6
        self.val7 = val7
        self.val8 = val8

    def display(self):
        print("CPU:", self.val1)

with open("/Users/user/Desktop/data.txt", 'r') as file
    for line in file:
        line = line.split(",")
        lin = Line(*line)
        lin.display()

要将列表中的值解压到函数的所有参数中(在本例中为Line.__init__),请使用*运算符,如下所示:

lin = Line(*li)

相关问题 更多 >