2017-03-06 166 views
0

我想創建一個包含分隔正/負號的文本文件「」。 我想讀這個文件,並把它放在data = []。我已經編寫了下面的代碼,我認爲它運行良好。 我要問你們是否知道一個更好的方式來做到這一點,或者如果它做好循環通過書面 感謝所有閱讀文本文件列出在python

#!/usr/bin/python 
if __name__ == "__main__": 
     #create new file 
     fo = open("foo.txt", "w") 
     fo.write("111,-222,-333"); 
     fo.close() 
     #read the file 
     fo = open("foo.txt", "r") 
     tmp= [] 
     data = [] 
     count = 0 
     tmp = fo.read() #read all the file 

     for i in range(len(tmp)): #len is 11 in this case 
      if (tmp[i] != ','): 
       count+=1 
      else: 
       data.append(tmp[i-count : i]) 
       count = 0 

     data.append(tmp[i+1-count : i+1])#append the last -333 
     print data 
     fo.close() 
+3

請參閱[CodeReview.SE]獲取有關工作代碼的反饋。 – JETM

回答

1

您可以使用split方法用逗號作爲分隔符:

fin = open('foo.txt') 
for line in fin: 
    data.extend(line.split(',')) 
fin.close() 
+0

感謝您的幫助,我需要追加數爲float進一步code..i試圖data.extend(浮點(line.split(「」)),但它似乎沒有工作。我需要這樣的data.append (float(tmp [i-count:i])) – gab55

+0

line.split(',')返回一個列表,並且不能將float直接應用到列表中。如果要將其應用於該列表的每個元素你可以使用map方法: data.extend(map(float,line.split(','))) 或者你爲了更好地理解它,map(float,line.split(','))表示[float(num)for num in line.split(',')] – anairebis

0

相反,你可以只使用分裂:

#!/usr/bin/python 
if __name__ == "__main__": 
     #create new file 
     fo = open("foo.txt", "w") 
     fo.write("111,-222,-333"); 
     fo.close() 
     #read the file 
     with open('foo.txt', 'r') as file: 
      data = [line.split(',') for line in file.readlines()] 
     print(data) 

注這給出了一個列表的列表,每個列表來自一個單獨的行。在你的例子中,你只有一行。如果你的文件將始終只有一個單一的線,你可以採取的第一個元素,數據[0]

0

要獲得全文件內容(數字正數和負數)到列表中,您可以使用分割和分割線

file_obj = fo.read()#read your content into string 
list_numbers = file_obj.replace('\n',',').split(',')#split on ',' and newline 
print list_numbers