在 Python 中,调用
temp = open(filename,'r').readlines()
生成一个列表,其中每个元素都是文件中的一行。这有点愚蠢但仍然:readlines()
还向每个元素写入换行符,这是我不希望发生的事情。
我怎样才能避免它?
在 Python 中,调用
temp = open(filename,'r').readlines()
生成一个列表,其中每个元素都是文件中的一行。这有点愚蠢但仍然:readlines()
还向每个元素写入换行符,这是我不希望发生的事情。
我怎样才能避免它?
您可以使用以下命令读取整个文件并拆分行str.splitlines
:
temp = file.read().splitlines()
或者您可以手动删除换行符:
temp = [line[:-1] for line in file]
注意:最后一个解决方案仅在文件以换行符结尾时才有效,否则最后一行将丢失一个字符。
这个假设在大多数情况下都是正确的(特别是对于由文本编辑器创建的文件,它们通常会添加一个结束换行符)。
如果要避免这种情况,可以在文件末尾添加换行符:
with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
或者更简单的替代方法是strip
换行:
[line.rstrip('\n') for line in file]
甚至,虽然很不可读:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
它利用了返回值or
不是布尔值,而是被评估为真或假的对象这一事实。
该readlines
方法实际上等价于:
def readlines(self):
lines = []
for line in iter(self.readline, ''):
lines.append(line)
return lines
# or equivalently
def readlines(self):
lines = []
while True:
line = self.readline()
if not line:
break
lines.append(line)
return lines
由于readline()
保留换行符也readlines()
保留它。
注意:为了方法的对称性readlines()
,不会添加结束换行符,因此会生成in的精确副本。writelines()
f2.writelines(f.readlines())
f
f2
temp = open(filename,'r').read().splitlines()
一次读取一行文件。使用 .从字符串末尾删除不需要的字符str.rstrip(chars)
。
with open(filename, 'r') as fileobj:
for row in fileobj:
print(row.rstrip('\n'))
另见str.strip([chars])
和str.lstrip([chars])
。
我认为这是最好的选择。
temp = [line.strip() for line in file.readlines()]
temp = open(filename,'r').read().splitlines()
尝试这个:
u=open("url.txt","r")
url=u.read().replace('\n','')
print(url)
要摆脱尾随的行尾 ( /n
) 字符和空列表值 ( ''
),请尝试:
f = open(path_sample, "r")
lines = [line for line in f.readlines() if line.strip() != '']
这里的脚本将从文件中获取行,并在file2的末尾保存没有换行符的每一行,0结尾。
file = open("temp.txt", "+r")
file2 = open("res.txt", "+w")
for line in file:
file2.writelines(f"{line.splitlines()[0]},0\n")
file2.close()
如果你看line,这个值是data\n,所以我们把splitlines()
使其成为一个数组并[0]选择唯一的单词数据
my_file = open("first_file.txt", "r")
for line in my_file.readlines():
if line[-1:] == "\n":
print(line[:-1])
else:
print(line)
my_file.close()
import csv
with open(filename) as f:
csvreader = csv.reader(f)
for line in csvreader:
print(line[0])