2016-02-26 67 views
1

我需要用python 3.3逐行读取.txt文件,并将字符长度(格式:MEHSAOSHAHSHSUDO ....)分成513个字符块。 我的代码适用于第一行,但下一行不起作用,我无法解决原因。将长字符串分块为513个字符块| Python 3.3

我也很困惑如何让代码重复下一行功能,直到文件结束。该文件长约500行。

这是我到目前为止有:

with open('bsxlength.txt' , 'r') as string: 
    first_line = string.readline() 
    n = 513 
    print [first_line[i:i+n] for i in range(0, len(first_line), n)] 
    next_line = string.readline(+2) 
    n = 513 
    print [next_line[i:i+n] for i in range(0, len(next_line), n)] 

三江源

最终目标是使线条分割成513块,如果有一大块是不够例如该行的长度为600个字母以计数适量的字母(例如87)并制作新的块。但一个步骤在一个时间诶

+0

可能重复的:http://stackoverflow.com/questions/9475241/split-python-string-every-nth-character –

回答

4
next_line = string.readline(+2) 

的意思是“从当前行读取的最大的2个字符”,而不是“读第二行”。 你也不必手动重复同样的命令,每行 - 只需使用一个循环:

with open('bsxlength.txt' , 'r') as string: 
    n = 513 
    for line in string: 
     print [line[i:i+n] for i in range(0, len(line), n)] 

现在回到你最初的方法:可选参数size.readline()需要指定的字符数应最多可以从当前行读取。所以,你可以用它来实现自己的目标:

with open('bsxlength.txt' , 'r') as string: 
    result = [] 
    while True: 
     chunk = string.readline(513) 
     if chunk: 
      result.append(chunk) 
     else: 
      break 
+0

三江源这么多!任何有关如何倒计数的线索(请参阅编辑之一) –

+0

对不起,我输错了;它应该是'用于字符串中的行',而不是'文件'。看我的编辑。 –

+0

Thankyou编辑修正了它! –

相关问题