繁体   English   中英

获取列表中每行的长度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM