簡體   English   中英

Python Regex排序並打印到帶有換行符的新文檔中

[英]Python Regex Sort and Print into a New Document with line breaks

我正在使用以下代碼:

from__future__import print_function
import re
NDoc = raw_input("Enter name of new document ")+".txt"
log = open(NDoc, 'a')
file = raw_input("Enter a file to be sorted ")
xfile = open(file+".txt")

for line in xfile:
    l=line.strip()
    n=re.sub("(\B)(?=((MTH|ENG|SCN|HST)[|]))","\n",line)

if len(n) > 0:
    nl=split.("\n")
    for item in nl:
        log.write(item)

使用此代碼,我試圖允許用戶為新文檔創建一個名稱,然后讓該代碼使用該名稱創建文檔,並將排序后的信息打印到其中。 目前,我可以創建一個新文檔並將其寫入,但是數據只是在一個連續的字符串中,而不是在其中包含換行符(\\ n)。 當我打印到命令提示符時,它以單獨的行出現,但是,當我打印到.txt文件時,它不是。

任何幫助將不勝感激,謝謝先進!

編輯:

樣例行如下所示:MTH | lkdhskghgsh | aljfHST | alkjdfakljdfSCN | klahdfkj @ $ fadfklj | afENG | alkfd

我希望它在新文檔中看起來像這樣:

MTH | lkdhskghgsh | aljf

HST | alkjdfakljdf

SCN | klahdfkj @ $ fadfklj | af

ENG | alkfd

但是,當我將其寫入記事本文檔時,它仍然是示例行的形式。 當我打印(項目)時,在命令提示符下,它顯示為位於不同的行上(這是我想要的記事本.txt)。

您可以在log.write(item)后面添加一個換行符。

for line in xfile:
    l=line.strip()
    n=re.sub("(\B)(?=((MTH|ENG|SCN|HST)[|]))","\n",line)

    if len(n) > 0:
        nl=split.("\n")
        for item in nl:
            log.write(item+'\n')

我測試了您的正則表達式,並將“ \\ n”放置在正確的位置,因此您仍然可以保留循環和if語句,僅添加換行符即可。

Input: MTH|lkdhskghgsh|aljfHST|alkjdfakljdfSCN|klahdfkj@$fadfklj|afENG|alkfd

Output (in a test.txt file I made):

MTH|lkdhskghgsh|aljf
HST|alkjdfakljdf
SCN|klahdfkj@$fadfklj|af
ENG|alkfd

確保您的if語句在for循環內而不在外部縮進。 我想這只是您問題中的格式化問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM