Python CSV编辑字段,修改大于特定数字的值
我有一个包含距离矩阵的csv文件,里面的一部分看起来是这样的:
这个文件里有很多数字大于1000000的字段,我想写一个python脚本,把这些大于1000000的数字都改成零。
这是我的脚本,但我不知道怎么在这些字段里写入零,
import csv
f = open('distMatrix.csv', 'rb')
csvreader = csv.reader(f)
element = list(csvreader)
i = 0
j = 0
while i <= 55: #this is a 56 * 56 matrix
while j <= 55:
while element[i][j] >= 1000000:
element[i][j] = 0
j = j + 1
i = i + 1
欢迎大家给我建议,谢谢。
我在Windows 8.1 x64上使用的是python 2.7.4。
更新#1
我使用了以下代码,得到了我想要的结果(谢谢你,unutbu!),
import csv
import tempfile
import shutil
import os
os.chdir('C:\Users\Heinz\Desktop')
filename = 'distMatrix.csv'
with open(filename, 'rb') as f, tempfile.NamedTemporaryFile(mode='wb', delete=False) as g:
writer = csv.writer(g, delimiter = ',')
for row in csv.reader(f):
row = [element if float(element) < 10**6 else 0 for element in row]
writer.writerow(row)
shutil.move(g.name, filename)
编辑后的CSV文件看起来是这样的:
我只是稍微修改了一下unutbu的脚本,另外感谢Martijn Pieters给我提供了一个类似的例子。
1 个回答
3
这段代码是一个示例,展示了如何使用某种编程语言来实现特定的功能。它可能包含了一些变量、函数或者其他编程元素,目的是帮助你理解如何在实际编程中应用这些概念。
如果你是刚开始学习编程的小白,看到这样的代码可能会觉得有点复杂,但其实只要慢慢来,逐步理解每一部分,就能掌握它的意思。可以把代码想象成一系列的指令,告诉计算机该做什么。
记住,编程就像是给计算机下命令,理解这些命令的含义是学习编程的第一步。多练习,多尝试,你会越来越熟悉这些内容的。
import csv
import tempfile
import shutil
filename = 'distMatrix.csv'
with open(filename, 'rb') as f, tempfile.NamedTemporaryFile(mode='wb', delete=False) as g:
writer = csv.writer(g)
for row in csv.reader(f):
row = [element if int(element) < 10**6 else 0 for element in row]
writer.writerow(row)
shutil.move(g.name, filename)