2016-05-31 47 views
2

我是新来的蟒蛇,我想读取文件的每一行与逗号','分开的值。像这样一行:参数来自变量?

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:值。

回答

0

要解压缩在一个列表中的值到一个函数的所有参数(在这种情况下Line.__init__),使用*运营商,像这样:

lin = Line(*li) 
1

您需要将每一个在每个项目lineLine构造函数。一种方法可以这样写:

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() 
+0

非常感谢,它像一个魅力工作 – viswa

+2

不客气。请阅读[_当某人回答我的问题时该怎么办?_](http://stackoverflow.com/help/someone-answers) – martineau