将CSV文件导入到Python列表中

3

我这里有一个小问题。我需要读取一个txt文件并将其存储到一个列表中,我已经做到了...但问题是我需要操作一些列,比如将它们乘以30等等。(我还在学习Python)(这是Python3.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个回答

3

Python将数字读取为字符串,因此当您执行*3时,它会认为“啊!Matt想让我把字符串三次排列在一起!”

如果您先将其转换为浮点数,它就没问题了:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接