Python 用一个值替换某列中的所有值
尊敬的本论坛Python用户: 我有一个数据文件,其中包含大量ascii格式的列和行 此文件包含数字和字母的混合数据,例如:Python 用一个值替换某列中的所有值,python,replace,Python,Replace,尊敬的本论坛Python用户: 我有一个数据文件,其中包含大量ascii格式的列和行 此文件包含数字和字母的混合数据,例如: 15.20000 120.60000 98327 get data information here. SURFACE DATA FROM ??????????? SOURCE FM-12 SYNOP
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”,除了:打印行
。这会让你知道所讨论的那一行是怎么回事。