[英]Getting length of each line in a list
我有一段文本,我想在少于50个字符的任何行的末尾添加一个新行字符。
我在这里
text = open('file.txt','r+')
line_length = []
lines = list(enumerate(text))
for i in lines:
line_length.append(len(i))
print lines
print line_length
我只是一遍又一遍地列出了大量的值2。 我知道每行的长度不是2。
编辑:这是我去的解决方案
text = open('text.txt','r+')
new = open('new.txt','r+')
new.truncate(0)
l=[]
for i in text.readlines():
if len(i) < 50:
l.append(i+'\n')
else:
l.append(i)
new.write(' '.join(l))
text.close()
new.close()
像:
text = open('file.txt','r+')
l=[]
for i in text.readlines():
if len(i)<50:
l.append(i)
else:
l.append(i.rstrip())
无需enumerate
。
或单线(我建议这样做):
l=[i if len(i)<50 else i.rstrip() for i in text.readlines()]
所以您的代码因为真正的enumerate
而不起作用。
两种情况:
print(l)
是期望的输出。
lines
是对的列表(每个具有两个的长度)。 您需要检查子列表的长度,而不是其所在的对:
for i, seq in lines:
line_length.append(len(seq))
虽然,如您所见,您没有使用i
,所以使用enumerate
没有意义。
假设您要写入一个新文件,您将需要以下内容:
with open("file.txt", "r+") as input_file, open("output.txt", "w") as output_file:
for line in input_file:
if len(line) < 50:
line += '\n'
output_file.write(line)
现有文件中的行通常已经在它们的末尾添加了换行符,因此对于长度小于50的行,结果将是两个换行符。请避免使用rstrip
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.