我正在努力使用Python 2.7.10。我正在尝试创建一个程序,最终打开一个CSV文件,从文件中读取数字,使用数字执行计算并写回CSV文件。
代码(即计算)没有完成,我只想尝试几个小位,这样我才能开始发现问题。 CSV文件中的数据如下所示:
['110000,75000\n', '115000,72500\n', '105000,85250\n', '100000,70000']
我遇到的一个问题是将CSV字符串正确转换为数字,然后告诉Python我想在计算中使用哪一行,列;类似于Row(0),Column(0) - Row(1)Column(1)。
我尝试了一些不同的东西,但它似乎在转换为数字位时崩溃了。错误消息是TypeError int() argument must be a string or a number, not list
或IOError File not open for string
- 取决于我尝试过的内容。有人能指出我正确的方向吗?
import csv
def main():
my_file = open('InputData.csv','rU')
#test = csv.writer(my_file, delimiter=',')
file_contents = my_file.readlines()
print file_contents
for row in file_contents:
print row
#convert to numbers
#val0 = int(file_contents.readlines(0))
#val1 = int(file_contents.readlines(1))
#val0 = int(my_file.readlines(0))
#val1 = int(my_file.readlines(1))
#perform calculation
#valDiff = val1 - val0
#append to third column, may need to be in write file mode, num to strings
#file_contents.append
my_file.close()
main()
答案 0 :(得分:0)
列表file_contents
现在包含所有excel数据,因此尝试使用readlines可能不适用于列表类型。我会试试
row0 = file_contents[0].split(",")
哪个应该以列表格式给你第一行。您应该(并且很可能需要)将其放入循环中以覆盖您拥有的任何大小的excel表。然后
val0 = int(row0[0])
应该给你你想要的价值。但是我会再次进行这种迭代以节省一些时间和精力。
答案 1 :(得分:0)
假设您的文件是纯文本格式,并且您不想使用像pandas
这样的第三方库,那么这将是执行此操作的基本方法:
data = []
with open('InputData.csv','r') as my_file:
for row in my_file:
columns = row.split(',') #clean and split
data.append([int(value) for value in columns])
print(data[0][0]) #row=0 col=0
print(data[0][1]) #row=0 col=1
答案 2 :(得分:0)
我认为这会做你想做的事情:
import csv
def main(filename):
# read entire csv file into memory
with open(filename, 'rb') as my_file:
reader = csv.reader(my_file, delimiter=',')
file_contents = list(reader)
# rewrite file adding a difference column
with open(filename, 'wb') as my_file:
writer = csv.writer(my_file, delimiter=',')
for row in file_contents:
val0, val1 = map(int, row)
difference = val1 - val0
#print(val0, val1, difference)
writer.writerow([val0, val1, difference])
if __name__ == '__main__':
main('InputData.csv')
使用它时要小心,因为它会重写文件。对于测试和调试,您可能希望将结果写入具有不同名称的第二个文件。