Python CSV编辑字段,修改大于特定数字的值

1 投票
1 回答
1155 浏览
提问于 2025-04-18 03:09

我有一个包含距离矩阵的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)

撰写回答