如何在python中删除空字符串?

时间:2015-03-02 13:47:40

标签: python string

我在使用此代码时不断获得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文档末尾的空字符串?

4 个答案:

答案 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()

但是,如果我正确理解你的问题,那不是要删除空字符串,而只是忽略它。