将字符串转换为整数()
我有一个数据集,长得像这样:
0 _ _ 23.0186E-03
10 _ _51.283E-03
20 _ _125.573E-03
这些数字是逐行排列的(下划线代表空格)。
右边一列的数字现在是字符串的一部分。我想把右边的数字转换成数值(比如0.0230186等等)。一旦它们变成简单的数字形式,我可以用int()来转换,但我需要先把"E"处理一下才能做到。如果你知道怎么处理任何形式的E,比如E-01、E-22,那就太好了。
目前我的代码是这样的:
fin = open( 'stringtest1.txt', "r" )
fout = open("stringtest2.txt", "w")
while 1:
x=fin.readline()
a=x[5:-1]
##conversion code should go here
if not x:
break
fin.close()
fout.close()
4 个回答
2
如果我理解得没错,你想做的事情其实不需要对E进行任何处理:在Python中,使用float('23.0186E-03')会返回0.0230186,我想这就是你想要的结果。
你只需要:
fout = open("stringtest2.txt", "w")
for line in open('stringtest1.txt', "r"):
x = float(line.strip().split()[1])
fout.write("%f\n"%x)
fout.close()
在输出字符串中使用 %f,可以确保输出是十进制格式(没有E)。如果你只是用str(x),根据原始值的不同,输出可能会包含E,所以正确的转换方法取决于你想要什么样的输出:
>>> str(float('23.0186E-06'))
'2.30186e-05'
>>> "%f"%float('23.0186E-06')
'0.000023'
>>> "%.10f"%float('23.0186E-06')
'0.0000230186'
你可以在 %f 后面加上任何数字来指定小数点后的位数。想了解更多关于使用 % 进行字符串格式化的内容,可以查看 http://rgruet.free.fr/PQR26/PQR2.6.html#stringMethods(向下滚动到“使用 % 操作符进行字符串格式化”部分)。
4
你应该使用上下文管理器,文件句柄是可以被遍历的:
with open('test1.txt') as fhi, open('test2.txt', 'w') as fho:
for line in fhi:
f = float(line.split()[-1])
fho.write(str(f))
5
我建议你可以这样进行转换:
float(x.split()[-1])
str.split()
这个方法在没有提供任何参数的情况下,会根据空格来分割字符串,而 float()
这个方法则可以把字符串转换成数字,比如:
>>> '20 125.573E-03'.split()
['20', '125.573E-03']
>>> float('20 125.573E-03'.split()[-1])
0.12557299999999999