将CSV文件导入列表python

时间:2015-05-13 20:37:46

标签: python csv

我在这里遇到一点问题。我需要读取一个txt文件并将其存储到一个列表中,我已经这样做了......但问题是我需要操作一些列,比如乘以30然后依此类推。 (我还在学习python)(它的python 3.4)

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 个答案:

答案 0 :(得分:3)

Python正在将数字作为字符串读取,所以当你执行*3它会认为"啊!马特希望我连续三次把弦放进去!"

如果你先将它转换为浮动,那就没关系了:

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

答案 1 :(得分:1)

您需要将columns[3][i]解析为浮动状态

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

由于

'any_string'*3
>>any_stringany_stringany_string
 100*3
>>300

答案 2 :(得分:-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