首页 > 解决方案 > .replace 在 for 循环中被跳过

问题描述

我想将.data文件转换为.csv文件,因此我正在读取.data文件,替换一些字符和字符串,以便.csv文件应该可以用numpy.loadtxt. 不幸的是,这两行:

line = line.replace("yes", "1") 
line = line.replace("no", "0")

被跳过。所以该.loadtxt功能将不起作用。我试图改变替换的字符,一切都没有成功。如果有人可以帮助我,那就太好了。这是完整的代码:

import numpy as np

fString = open("diagnosis.data", "r")
fFloat = open("diagnosis.csv", "w")

for line in fString:
    line = line.replace(",", ".")
    line = line.replace("\t", ",")
    line = line.replace("yes", ",1")
    line = line.replace("no", "0")
    line = line.replace("\r\n", "\n")
    fFloat.write(line)

fString.close()
fFloat.close()

fFloat = open("diagnosis.csv","r")
dataset = np.loadtxt(fFloat, delimiter=",")
fFloat.close()

数据集可以在这里找到

标签: pythonnumpycsv

解决方案


可能出错的一件事是您的行引用没有重写 fString。你可以尝试更接近这种语法的东西吗?这实际上将修改 fString 而不仅仅是 line 变量。

for line in range(fString):
    fString[line] = fString[line].replace(",", ".")

推荐阅读