我在编写python脚本时遇到了麻烦。具体来说,我有一串数字,并希望替换“零”'''''使用整数0.我想将此字符串覆盖为浮点值。我使用了data.replace,因此必须放置""在0附近 - 如果没有,因为它需要一个字符缓冲区对象。我是说得对,我可以去掉""从转换到浮点数之前的0?
> for data in inFile:
> data = data.replace ("zero", "0")
> data = map(float,data.strip('"'))
ValueError:无法将字符串转换为float:s
它是一个更大的脚本的一部分,它接受一个值列表。我想从前100个中减去给定行的最后100个值。
inFile = gzip.open('path','rb')
inpNorm = 0.5
samNorm = 1
inFile.next()
for line in inFile:
cols = line.strip().split('\t')
data = cols[6:]
for data in inFile:
data = data.replace("zero",0)
data = map(float,data.strip('"'))
inputVals = [x * inpNorm for x in data[:100]]
h3k27Vals = [x * samNorm for x in data[100:]]
normVals = [h327Vals[i] - inputVals[i] for i in len(inputVals)]
print '\t'.join(cols[:6]) + '\t'.join(map(str,normVals))
inFile.close()
我的输入文件如下所示:
C8098283 1 8268 asx1.1_ox1.0.loc.00001 . + zero zero zero 11.701 12.801 13.91
非常感谢
P.S。如果这不够明确,真的很抱歉。我是编程和堆栈溢出的新手。
答案 0 :(得分:0)
以下是一些建议。
line = "8268 asx1.1_ox1.0.loc.00001 . + zero zero zero 11.701 12.801 13.91"
print("Input: '{}'".format(line))
converted_line = "0".join(line.split('zero')) # Split the line where you have 'zero' and rebuild the string with '0'
print("Converted line: '{}'".format(converted_line))
你说你想转换价值。该行中有几个非浮动条目,但最后6个值似乎很有趣。我通常通过以下方式解压缩值:
v1, v2, v3, v4, v5, v6 = map(float, converted_line.rstrip().split()[4:])
# .split() with no argument splits on whitespace
# .rstrip() is to remove trailing '\n' (newlines), which are common when parsing files
print("Data:", v1, v2, v3, v4, v5, v6)
当然,您也可以将其存储在数组中(即data = map(float, converted ...)
)。一起运行产生输出
Input: '8268 asx1.1_ox1.0.loc.00001 . + zero zero zero 11.701 12.801 13.91'
Converted line: '8268 asx1.1_ox1.0.loc.00001 . + 0 0 0 11.701 12.801 13.91'
Data: 0.0 0.0 0.0 11.701 12.801 13.91
另外,要解决您的实际问题。现在你想要从文件中的不同位置读取彼此(即你想要0 -> 100, 1 -> 101, 2 -> 102
等)。这有点麻烦,并没有那么高效。如果你的文件大小不是太大(可能是<1M行或某事),我建议你读完整个文件,进行计算,然后用数据做你想做的事。在像
col1 = []
col2 = []
...
for line in file.readlines():
v1, v2, ... = map(float, converted_line.rstrip().split()[...])
col1.append(v1)
col2.append(v2)
...
# Now do your data manipulation of the parsed data that you find in `col1`, `col2`, etc