从文件中删除仅包含新行的行

时间:2019-01-25 03:11:41

标签: python-3.x

我正在尝试读取文件,并希望将数据作为元组列表返回。在文件末尾仅包含新行的行,我想删除该行。

我尝试了诸如strip(),replace()之类的python函数。这些函数从除了最后一行之外的行尾删除“ \ n”。

data.txt

fname = "x"
date=as.character.Date(format.Date(Sys.Date(),"%d.%m.%y"))
fmt=".xlsx"
newname=paste0(x,date,fmt)
file.rename("x.xlsx",newname)

function.py

     X          Class
   1  15.79311545   YES
   2  10.95644178   YES
   3  27.77413952   NO
   4  18.41013616   NO
   5  18.74485271   NO
   6  22.44869209   NO
   7  18.09242441   NO
   8  15.24850737   NO
   9  11.21480959   YES
   10 13.195037 NO
   11

3 个答案:

答案 0 :(得分:2)

您可以使用iter函数阅读直到独立的换行符:

def readAllData(file_name):
    with open(file_name) as file:
        return [tuple(line.split()) for line in iter(file.readline, '\n')]

答案 1 :(得分:0)

首先,一个便笺,这个…

for line in file:
    filelist = [line.replace('\n','') for line in file]

…几乎可以肯定不是您想要的。您只需要一个for循环。摆脱另一个。

filelist = [line.replace('\n', '') for line in file]

现在,跳过仅是空格的一行:

filelist = [line.replace('\n', '') for line in file if line.strip()]

有了此保护措施,如果line.strip()返回False(或类似False的任何内容,包括空字符串),则列表理解将把它排除在外。

答案 2 :(得分:-1)

遇到这些行时,您可以简单地忽略它们:

def readAllData(file_name):
    lst = []
    with open(file_name) as file:
        for line in file:
            if line.startswith('\n'):
                continue
            t = tuple(line.split())
            print(t)
            lst.append(t)
        return lst