2015-05-13 174 views
3

我在这里有一个小问题。我需要读取一个txt文件并将它存储到一个列表中,我已经这么做了......但问题是我需要操纵一些列,例如乘以30,等等。 (我还在学习蟒蛇)(Python的3.4)导入CSV文件到列表python

的test.txt文件:

Abacate;Para;PA;-1.1166667;-49.65 
Abacate;Amazonas;AM;-3.9463889;-62.9038889 

代码:

def readFile(): 
    with open('test.txt') as f: 
    reader = csv.reader(f,delimiter=";") 
    #reader.next() 
    for row in reader: 
     for (i,v) in enumerate(row): 
      columns[i].append(v) 

但是,当我尝试使用

for i in range(0,len(columns[3])): 
     listTest.append(columns[3][i]*3) 

结果是:

['-1.1166667-1.1166667-1.1166667'] 
['-1.1166667-1.1166667-1.1166667', '-3.9463889-3.9463889-3.9463889'] 

预计:

['-3.3500001','-11.8391667'] 

有没有更好的方式来做到这一点?

回答

3

Python正在读取数字作为字符串,所以当你做*3它认为“啊!马特希望我连续三次放置该字符串!”

如果你只是把它转换为浮动第一,这将是罚款:

for i in range(0,len(columns[3])): 
    listTest.append(float(columns[3][i])*3) 
+0

谢谢@JoelHinz。有效! – MattGA

+0

很高兴听到它! :) –

1

您需要将columns[3][i]解析成浮动像

listTest.append(float(columns[3][i])*3) 

因为

'any_string'*3 
>>any_stringany_stringany_string 
100*3 
>>300 
-1
import csv 
def readFile(infilepath): 
    answer = [] 
    with open(infilepath) as infile: 
     for *_head, a, _b in csv.reader(infile, delimiter';'): 
      answer.append(float(a) * 3) 
    return answer 
+0

为什么downvote? – inspectorG4dget