2016-02-26 121 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編輯修正了它! –

相關問題