Python 用一个值替换某列中的所有值

Python 用一个值替换某列中的所有值,python,replace,Python,Replace,尊敬的本论坛Python用户: 我有一个数据文件,其中包含大量ascii格式的列和行 此文件包含数字和字母的混合数据,例如: 15.20000 120.60000 98327 get data information here. SURFACE DATA FROM ??????????? SOURCE FM-12 SYNOP

尊敬的本论坛Python用户:

我有一个数据文件,其中包含大量ascii格式的列和行

此文件包含数字和字母的混合数据,例如:

 15.20000           120.60000 98327      get data information here.  SURFACE DATA FROM ??????????? SOURCE    FM-12 SYNOP                                                                                155.00000         1         0         0         0         0         T         F         F   -888888   -888888      20020531210000 100880.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0-888888.00000      0
我只是把一行的一部分放在这里。 我的目的是用一个值替换某列中的所有值。 例如,我想用999更改第3列中的所有值。 因此,我使用了如下代码:

import csv
with open("SURFACE1", "rb") as infile, open("output.txt", "wb") as outfile:
    reader = csv.reader(infile, delimiter="\t")
    writer = csv.writer(outfile, delimiter="\t")
    for row in reader:
        row[2] = "999" 
        writer.writerow(row)
然而,它似乎不起作用,导致“索引外错误”,即使它有30多列。 任何想法或帮助都将不胜感激

谢谢,,
艾萨克

对不起,我上次的评论是错的。我看到您使用的是csv.reader。在哪里会发生“索引外错误”?如果您正在使用一些调试工具,它应该打印出调用堆栈。我猜读者可能有一些行没有使用“\t”作为分隔符。您是否尝试过测试读卡器的行数是否超过2行?您好,您是否尝试了
行[0][3]
而不是
行[2]
…您确定您的分隔符有效吗?列之间似乎不止一个选项卡。请使用异常处理,即,
尝试行[2]=“999”,除了:打印行
。这会让你知道所讨论的那一行是怎么回事。