我在使用此代码时不断获得ValueError: Could not convert string to float
:
f = open('temperatuurid.txt')
while True:
fahren = float(f.readline())
print(round((fahren-32)*(5/9),2))
f.close()
如何删除.txt文档末尾的空字符串?
答案 0 :(得分:0)
您可以尝试下面的内容。
f = open('file')
m = f.readlines()
for i in m:
if not i == '\n':
fahren = float(i)
print(fahren)
print((fahren-32)*(5))
f.close()
答案 1 :(得分:0)
来自doc:
f.readline()从文件中读取一行;换行符(\ n)留在字符串的末尾,如果文件没有以换行符结尾,则只在文件的最后一行省略。这使得返回值明确无误;如果f.readline()返回一个空字符串,则表示已到达文件的末尾,而空白行由' \ n'表示,该字符串只包含一个换行符。
所以看起来应该是这样的:
f = open('temperatuurid.txt')
for line in f.readLines():
line = line.strip()
if not line:
continue
fahren = float(line)
print(round((fahren-32)*(5/9),2))
f.close()
f.readlines()
返回文件中所有行的列表(while True
是错误的)
if not line:
确保我们读取一个值。该文件指出:
如果参数是字符串,则它必须包含可能带符号的十进制或浮点数,可能嵌入在空格中。 ......如果没有给出参数,则返回0.0。
ps:Avinash Raj做得对,除了他不在乎线是否为空
答案 2 :(得分:0)
假设空行实际上是空的:
print(*[round((float(line)-32)*(5/9),2) for line in f if line != '\n'])
答案 3 :(得分:0)
也许是这样的:
f = open('temperatuurid.txt')
while True:
line = f.readline().strip()
fahren = float(line) if line else None
print(round((fahren-32)*(5/9),2)) if line else None
f.close()
但是,如果我正确理解你的问题,那不是要删除空字符串,而只是忽略它。