2017-02-13 14 views
0

我有一個會從一個文本文件導入一個字符串後新生產線,具有以下空間和每一個第n個字符

code: input_file.open("text_file.txt", 'r') 
text = input_file.read() 
input_file.close() 

現在我的問題是,該字符串將是1之間-999長。我需要在第10封信後有空格,並且每60封信都有一個新的空格。

def insertNewLines(text, lineLength): 
    if len(text) <= lineLength: 
    return text 
    else: 
    return text[:60] + ' '.join(text[i:i+10] for i in range(0,len(text),10)) + insertNewLines(text[60:],60) 

我想要做的就是從文本文件導入的字母序列(1-999),然後使用Python的序列導入到:

目前我已經嘗試使用HTML文件,然後用導入的colorcoded /編號/分割序列以可查看的格式寫入HTML文件。 我已經獲得了HTML文件的工作方式,但是我無法在每個第60個文字後10個字母和一個新行之後留出空格。

這就是我目前的嘗試看起來like

+0

......這有什麼錯你想要什麼? – asongtoruin

+0

我試圖給出一個沒有空格/換行符的行,然後在60行之後,正確執行。如果它有任何區別,那麼在每一個新行之間,應該有這些字母的編號,例如。 1 -10spaces- 10 - 10spaces - 20等。最多60個。 –

回答

1

您可以通過使用join和使用range通過各種nth字符步進做到這一點。一旦您的文本按照您想要的方式拆分,您可以將其拆分到\n,然後在每行之間插入p元素。

f = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' * 35 #this generates a 910 character string 

def break_apart(sep, step): 
    return sep.join(f[n:n + step] for n in range(0, len(f), step)) 


f = break_apart(' ', 10) 
f = break_apart('\n', 60)  

p = '<p>1 10 20 30 40 50 60</p>' 
fp = '\n'.join(j for i in f.split('\n') for j in [p, i]) 

html = '<div>{}</div>'.format(fp) 

print(html) 

<div> 
<p>1 10 20 30 40 50 60<p> 
ABCDEFGHIJ KLMNOPQRST UVWXYZABCD EFGHIJKLMN OPQRSTUVWX YZABC 
<p>1 10 20 30 40 50 60<p> 
DEFGH IJKLMNOPQR STUVWXYZAB CDEFGHIJKL MNOPQRSTUV WXYZABCDEF 
<p>1 10 20 30 40 50 60<p> 
GHIJKLMNOP QRSTUVWXYZ ABCDEFGHIJ KLMNOPQRST UVWXYZABCD EFGH 
<p>1 10 20 30 40 50 60<p> 
IJKLMN OPQRSTUVWX YZABCDEFGH IJKLMNOPQR STUVWXYZAB CDEFGHIJK 
<p>1 10 20 30 40 50 60<p> 
L MNOPQRSTUV WXYZABCDEF GHIJKLMNOP QRSTUVWXYZ ABCDEFGHIJ KLM 
<p>1 10 20 30 40 50 60<p> 
NOPQRST UVWXYZABCD EFGHIJKLMN OPQRSTUVWX YZABCDEFGH IJKLMNOP 
<p>1 10 20 30 40 50 60<p> 
QR STUVWXYZAB CDEFGHIJKL MNOPQRSTUV WXYZABCDEF GHIJKLMNOP QR 
<p>1 10 20 30 40 50 60<p> 
STUVWXYZ ABCDEFGHIJ KLMNOPQRST UVWXYZABCD EFGHIJKLMN OPQRSTU 
<p>1 10 20 30 40 50 60<p> 
VWX YZABCDEFGH IJKLMNOPQR STUVWXYZAB CDEFGHIJKL MNOPQRSTUV W 
<p>1 10 20 30 40 50 60<p> 
XYZABCDEF GHIJKLMNOP QRSTUVWXYZ ABCDEFGHIJ KLMNOPQRST UVWXYZ 
<p>1 10 20 30 40 50 60<p> 
ABCD EFGHIJKLMN OPQRSTUVWX YZABCDEFGH IJKLMNOPQR STUVWXYZAB 
<p>1 10 20 30 40 50 60<p> 
CDEFGHIJKL MNOPQRSTUV WXYZABCDEF GHIJKLMNOP QRSTUVWXYZ ABCDE 
<p>1 10 20 30 40 50 60<p> 
FGHIJ KLMNOPQRST UVWXYZABCD EFGHIJKLMN OPQRSTUVWX YZABCDEFGH 
<p>1 10 20 30 40 50 60<p> 
IJKLMNOPQR STUVWXYZAB CDEFGHIJKL MNOPQRSTUV WXYZABCDEF GHIJ 
<p>1 10 20 30 40 50 60<p> 
KLMNOP QRSTUVWXYZ ABCDEFGHIJ KLMNOPQRST UVWXYZABCD EFGHIJKLM 
<p>1 10 20 30 40 50 60<p> 
N OPQRSTUVWX YZABCDEFGH IJKLMNOPQR STUVWXYZAB CDEFGHIJKL MNO 
<p>1 10 20 30 40 50 60<p> 
PQRSTUV WXYZABCDEF GHIJKLMNOP QRSTUVWXYZ 
</div> 
+0

嗨,這正是我想要它做的事情,但它似乎不起作用。如果它有什麼區別,我的輸入是從1個長序列的txt.file導入的。然後它應該被複制到HTML中,這樣我可以使它看起來「很好」。 如果我發佈我目前使用的所有代碼,會有幫助嗎? –

+0

@JacobSørensen將其複製到HTML *確實有所作爲;它會改變你的原始問題所要求的預期行爲。 – Wondercricket

+0

如何顯示我的代碼的其餘部分?一個基本的解釋是,我從文本文件中導入一系列字母(1-999),然後使用python將序列導入到HTML文件中,然後使用導入的序列colorcoded /編號/分割寫入HTML並以可查看的格式。謝謝 –

0

我假設你的'text_file'裏有換行符,逐行閱讀。

text = [] 
    # My Sample Text files are utf-8 encoded 
    with io.open('text_file.txt','r', encoding='utf8') as fh: 
    for row,line in enumerate(fh,1): 
     text.append(line) 
    #end for 
    #end with = closing fh 

測試使用Python 3.4.2

+0

嗨,我的文本文件不應該有任何空格或換行,它應該是1個字母的長序列。 –

+0

您是不是指HTML Line Break而不是簡單的\ n? – stovfl

+0

老實說,我不確定100%確定,我需要對導入的字符串進行換行,但是要將字符串導入HTML文件進行格式化。 –

0

假設文本一致的字符串作爲輸入:

import string 
import random 


text = '' 
for i in range(16): 
    text += random.choice(string.ascii_lowercase)*10 

def insert_new_lines(input_string): 
    output = [] 
    for i in range(0, len(text), 60): 
     output.append(' '.join([text[j:j+10] for j in range(i, i+60, 10)])) 
    return '\n'.join(output) 


print insert_new_lines(text) 

的回報,使用隨機字母作爲一個例子:

ssssssssss mmmmmmmmmm mmmmmmmmmm wwwwwwwwww zzzzzzzzzz aaaaaaaaaa 
llllllllll llllllllll ffffffffff rrrrrrrrrr cccccccccc nnnnnnnnnn 
rrrrrrrrrr xxxxxxxxxx uuuuuuuuuu qqqqqqqqqq 
相關問題