我在这里遇到一点问题。我需要读取一个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']
有更好的方法吗?
答案 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