我正在尝试读取文件,并希望将数据作为元组列表返回。在文件末尾仅包含新行的行,我想删除该行。
我尝试了诸如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
答案 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