如何遍历 Python27 中的文件而不 运行 进入 ValueError 并完全遍历具有空行的文件?
How to iterate through a file in Python27 without running into ValueError and completely iterating through file with empty lines?
我基本上和这个人有同样的问题:person also having issues iterating
根据我所做的更改,我将 运行 转换为 IOError、ValueError(当我使用 for each 遍历文件中的每一行并使用 readline() 读取时),或者该程序可以运行,但是当有空行时它会切断我的数据。我也尝试过使用 for each 循环通过 .next() 而不是 readline 遍历文件,但这会跳过我数据集中的几乎所有其他行。我相信上面的评论可以解决我的问题,除了我的文本文件将包含空行,这会过早结束 while 循环。解决这个问题的最佳方法是什么?是否有更好的数据结构可供使用,或者我是否必须以某种方式解析我的文件以删除空行?
这是我的一段代码,我使用 .rstrip() 去除每行末尾的换行符:
f = open(self.path,'r')
while True:
line = f.readline().rstrip()
temp_lines_list.append(line)
if not line:
break
一些示例输入:
text1 : 2380218302
test2 : sad
test3 : moresad (very)
yetanothertest : more datapoints
wowanewsection: incredible
希望对您有所帮助谢谢:)
你有没有尝试过这样的事情:
lines_output = []
with open('myFile.txt', 'r') as file: # maybe myFile.txt == self.path??
for line in file.readlines(): # we use readlines() instead of readline() so we iterate entire file
stripped_line = line.strip()
if stripped_line not '':
lines_output.append(stripped_line) # save info if line is not blank
else:
pass # if line is blank just skip it
readline()
方法 returns 一行尾随换行符,即使是空行。您应该在剥离之前检查该行是否为空:
while True:
line = f.readline()
if not line:
break
temp_lines_list.append(line.rstrip())
但是,在 Python 中更习惯使用文件对象作为可迭代对象来遍历文件的行,这样您就不必自己管理迭代。
for line in f:
temp_lines_list.append(line.rstrip())
我基本上和这个人有同样的问题:person also having issues iterating
根据我所做的更改,我将 运行 转换为 IOError、ValueError(当我使用 for each 遍历文件中的每一行并使用 readline() 读取时),或者该程序可以运行,但是当有空行时它会切断我的数据。我也尝试过使用 for each 循环通过 .next() 而不是 readline 遍历文件,但这会跳过我数据集中的几乎所有其他行。我相信上面的评论可以解决我的问题,除了我的文本文件将包含空行,这会过早结束 while 循环。解决这个问题的最佳方法是什么?是否有更好的数据结构可供使用,或者我是否必须以某种方式解析我的文件以删除空行?
这是我的一段代码,我使用 .rstrip() 去除每行末尾的换行符:
f = open(self.path,'r')
while True:
line = f.readline().rstrip()
temp_lines_list.append(line)
if not line:
break
一些示例输入:
text1 : 2380218302
test2 : sad
test3 : moresad (very)
yetanothertest : more datapoints
wowanewsection: incredible
希望对您有所帮助谢谢:)
你有没有尝试过这样的事情:
lines_output = []
with open('myFile.txt', 'r') as file: # maybe myFile.txt == self.path??
for line in file.readlines(): # we use readlines() instead of readline() so we iterate entire file
stripped_line = line.strip()
if stripped_line not '':
lines_output.append(stripped_line) # save info if line is not blank
else:
pass # if line is blank just skip it
readline()
方法 returns 一行尾随换行符,即使是空行。您应该在剥离之前检查该行是否为空:
while True:
line = f.readline()
if not line:
break
temp_lines_list.append(line.rstrip())
但是,在 Python 中更习惯使用文件对象作为可迭代对象来遍历文件的行,这样您就不必自己管理迭代。
for line in f:
temp_lines_list.append(line.rstrip())